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原创,转载请注明出处
微信公众号:
猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。