我在 Xcode 中有一个非常简单的命令行工具:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(int argc, const char * argv[])
{
void *p = calloc(32, 1);
assert(p);
free(p);
return 0;
}
当我运行 Instruments->Allocations 时,它会显示一个活块。free
似乎被忽略了。
在过去,我记得你实际上仍然可以使用最后一个被释放的块。所以我尝试了这个:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(int argc, const char * argv[])
{
void *p = calloc(32, 1);
assert(p);
free(p);
void *q = calloc(32, 1);
assert(q);
free(q);
return 0;
}
现在, Instruments->Allocations 显示没有活块。这似乎是正确的。
谁能解释或重现我在第一个程序中看到的问题?
我正在使用 Xcode 4.1.1
谢谢。