是否定義了行爲實現?如果NULL和大小== 0傳遞給realloc()
:如果將NULL和大小0傳遞給realloc()會怎麼樣?
int main(void)
{
int *ptr = NULL;
ptr = realloc(ptr, 0);
if(ptr == NULL)
{
printf("realloc fails.\n");
goto Exit;
}
printf("Happy Scenario.\n");
Exit:
printf("Inside goto.\n");
return 0;
}
上面的代碼應打印 「realloc的失敗」,對不對?但它不是?我在某處讀過這個realloc
的調用也可能返回NULL。這是什麼時候發生的?
[NULL值(或未定義的指針)上的Realloc可能的重複](http://stackoverflow.com/questions/12134315/realloc-on-null-valued-or-undefined-指針) –
可能的重複做法'不處理'void * vp = realloc(NULL,0);'的行爲的特定點。 –
我同意@Jonathan在這裏。它看起來像引用DUP缺少realloc'ing爲0元素的行爲,以及有關指針,你會回來的信息進行了討論。分配0個元素時,較老的Microsoft平臺有一些麻煩。 – jww