所以我的這個代碼有以下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