本文介绍了Ç - realloc()的成功在Windows 7,但在Windows XP中失败了,为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以我的这个code有以下的realloc
块:
的char ** PTR = NULL;无效realloc_ptr(无符号整数new_size)
{
void *的温度= NULL; TEMP =的realloc(PTR,new_size * sizeof的(* PTR)); 如果(温度!= NULL){
PTR =温度;
}
其他{
出口(EXIT_FAILURE);
}
}
new_size
递增这个函数被调用权利之前。该数组永远只有扩大。此外, new_size
不超过3在我的code(现在)。
现在上面的的realloc
叫我在测试过程中在Windows 7中工作得很好。当我测试在XP这个code,上述code会成功3次,那就扔在第四次异常。当我回到code(这台计算机不具备code)我会后的确切异常。
我猜我的记忆过于分散,系统无法分配内存的连续块。我测试了我的code内存泄漏和固定所有的人(我希望)。任何想法,为什么发生这种情况?
编辑:
这上面的问题就走了,当我用Doug Lea的 malloc.c 。但我还是想知道为什么会这样。
谢谢!
解决方案
That (the exception) means you either have invalid pointers (or indices) somewhere (perhaps, uninitialized) and/or a memory corruption. realloc()
must fail silently and return NULL if the request cannot be satisfied.
And it's perfectly normal to have different behavior on different OSes.
这篇关于Ç - realloc()的成功在Windows 7,但在Windows XP中失败了,为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!