所以我的这段代码有以下realloc
块:
char **ptr = NULL;
void realloc_ptr(unsigned int new_size)
{
void *temp = NULL;
temp = realloc(ptr, new_size * sizeof(*ptr));
if(temp != NULL) {
ptr = temp;
}
else {
exit(EXIT_FAILURE);
}
}
new_size
在调用此函数之前递增。这个数组总是只扩展。此外,new_size
我的代码中永远不要超过 3(目前)。
现在上面的realloc
调用在我在 Windows 7 中的测试过程中运行良好。当我在 XP 中测试这段代码时,上面的代码会成功 3 次,然后它会在第 4 次抛出异常。当我回到代码时,我将发布确切的异常(这台计算机没有代码)。
我猜我的内存太碎片化了,系统无法分配连续的内存块。我已经测试了我的代码是否存在内存泄漏并修复了所有问题(我希望如此)。任何想法为什么会发生这种情况?
编辑:
当我使用 Doug Lea 的malloc.c时,上述问题就消失了。但我仍然想知道为什么会这样。
谢谢!