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 





本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/archive/2012/12/21/2827824.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值