所以我的这个代码有以下realloc
块:c - realloc()在Windows 7中成功但在Windows XP中失败,为什么?
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。但我仍然想知道为什么会发生这种情况。
谢谢!
副手,你做这件事的时候'new_size'是什么,还有每个配置中的内存模式(64位与32位)。 – WhozCraig 2013-02-17 09:05:59
是否有64位XP? – 2013-02-17 09:08:21
'new_size'将总是大于当前的大小。我一直在扩大这个阵列。还有什么是完全由内存模式意味着什么? – 2013-02-17 09:09:02