當我在VS2013中運行此代碼時,它失敗說「realloc test.exe已觸發了一個斷點。」我不知道爲什麼,任何想法(不過,如果我嘗試realloc的小值這將是確定)realloc在值大的visual studio中失敗
#include<stdlib.h>
#include <limits.h>
int main()
{
char *big = malloc(100);
char *c;
//c = malloc(INT_MAX);// this line works perfectly, on a 32bit build it will be = NULL
c = (char *)realloc(big, INT_MAX);//this one triggers a breakpoint!(or that's what visual studio says)
return 0;
}
編輯:?我建立它的一個32位的目標,其由VS的默認設置將不允許訪問超過2 Gib(幾乎),所以它應該在這裏失敗,但只是通過返回一個NULL指針不觸發斷點!
注:我建立它作爲RELEASE
您沒有足夠的_contiguous_內存。 – SLaks
即使如此,不應該只是返回NULL? – esihaj
@ user730033您的代碼(使用VS2010構建)確實爲我返回NULL。這是確切的程序,你失敗了嗎? – simonc