我想在调用函数之前和之后获取分配的总内存,以确定我是否正确释放了所有内容。
我在 C 中做这个,我很生疏,如果这是一个幼稚的问题,请原谅我。我正在寻找类似于 C# GC.GetTotalMemory(true) 的东西,目前在 Windows 中。
现在我在调用函数之前和之后使用PROCESS_MEMORY_COUNTERS_EX
and GetProcessMemoryInfo(...)
,但我无法对输出做出正面或反面,因为如果我进入函数并注释掉一个调用,free(...)
那么它会给我相同的结果(之后总是更大)。这是我现在所拥有的...
GetProcessMemoryInfo(hProc, &before, sizeof(before));
r = c->function();
GetProcessMemoryInfo(hProc, &after, sizeof(after));
if(r->result != 0) {
printf("error: %s\r\n", c->name);
printf(" %s\r\n", r->message);
printf(" %s (%d)\r\n", r->file, r->line);
failed++;
}
else if(after.PrivateUsage > before.PrivateUsage) {
printf("memory leak: %s\r\n", c->name);
printf(" %d kb\r\n", after.PrivateUsage - before.PrivateUsage);
failed++;
}
else succeeded++;
结果如下:
after.PrivateUsage - before.PrivateUsage = 12288
如果我去注释掉一些免费电话,我会得到相同的结果。我如何才能真正确定我使用 malloc 分配的当前总内存大小?