为什么valgrind说如果我使用2个int只有一个alloc?

问题描述 投票:1回答:1

这是我第一次使用工具来管理我的程序,我想通过一些简单的尝试来理解它是如何工作的:

int main(){
int a;
scanf("%d",&a);

}

并且在执行valgrind之后说有1个alloc,1个free是可以的。然后我这样做了:

int main(){
int a,b;
scanf("%d%d",&a,&b);
}

执行后valgrind仍然说1分配,1免费。为什么?我没有分配内存2次,在我的程序中加2个内存?我预计它会说2分2免费

int valgrind
1个回答
0
投票

Valgrind跟踪所有内存分配(包括由C库生成的内存分配)。

标准I / O实现(例如scanfprintf)将分配缓冲区供内部使用,这可能就是您所看到的。

© www.soinside.com 2019 - 2024. All rights reserved.