调试C时显示Program received signal SIGSEGV, Segmentation fault.
用的codeblocks编译器
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *str=(char *)malloc(6);
str="hello";
printf("%s\t%u\n",str,str);
str=(char *)realloc(str,21);
strcat(str,"world");
printf("%s\t%u",str,str);
free(str);
return 0;
}
输出结果:
debug时报错
请问是什么原因?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
str="hello";
这个语句将字符串常量"hello"
的地址赋值给str
, 所以str
的地址改变为一个指向常量字符串的地址. 不是malloc
的地址, 所以free(str)
就会出错.可以改为: