如果我使用 2 个整数,为什么 valgrind 说只有一个分配?

why valgrind says there is only one alloc if I use 2 ints?

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

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

}

执行 valgrind 后说有 1 个分配,1 个空闲,没关系。 然后我这样做了:

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

执行 valgrind 后仍然显示 1 alloc,1 free。为什么?我不是分配了 2 次内存,在我的程序中放入 2 个整数吗?我以为它会说 2 allocs 2 free

Vlagrind 跟踪所有内存分配(包括由 C 库进行的分配)。

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