realloc invalid pointer错误解析
realloc invalid pointer錯誤
char* temp=(char*) realloc(src,sizeof(char)*100);
如上面這行代碼,可能會出現標題中的錯誤。錯誤原因是因為src指向的不是NULL或堆中的地址。
具體的就是realloc函數要求src為下面兩種情況
1.src==NULL
2.src指針必須是malloc(), calloc(), 或realloc()分配的
?
造成錯誤的代碼
造成錯誤的代碼一般是如下形式是
char* src="Hello world!";//錯誤代碼
或者
char src[100];//錯誤代碼
上面這兩種方式分配內存位于棧區(如果src為局部變量)或者靜態區(如果src為全局變量)。講這樣的src傳給realloc就會發生realloc invalid pointer錯誤。
?
解決方法:
1.將src用malloc顯示分配內存
char* src="Hello world!";//錯誤代碼
可以用下面的代碼替換
char* src=(char*) malloc(strlen("Hello world!"));
strcpy(src,"Hello world!");//這個要用到string.h頭文件
?
char src[100];//錯誤代碼
可以用下面的代碼替換
char* src=(char*) malloc(sizeof(char)*100);
?
2.將src置為NULL
char* src=NULL;
本文由ladd原創,轉載請注明出處
http://www.cnblogs.com/ladd/archive/2012/07/02/2572112.html
轉載于:https://www.cnblogs.com/heyonggang/archive/2012/12/21/2827824.html
總結
以上是生活随笔為你收集整理的realloc invalid pointer错误解析的全部內容,希望文章能夠幫你解決所遇到的問題。