以下是这个C语言程序的源代码,在windows平台下的dev c++中运行没有任何问题,但是在linux下(包括red hat 9.0和fedora 12中)可以通过链接编译,但是运行就会出现"Short String is:short string(换一行)segmentation fault".我已查出是使用realloc函数导致的这个问题,但是一直不知道应该如何解决,希望高手解答。
源代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str;
str=(char*)malloc(20*sizeof(char));
if(str==NULL)
{
printf("Out of memory.\n");
exit(1);
}
str="short string";
printf("Short String is:%s\n", str);
str=(char*)realloc(str,40*sizeof(char));
str="long long long long string";
printf("Long string is:%s\n", str);
if(str!=NULL)
free(str);
return 0;
}
linux下使用realloc出现段错误
答案:1 悬赏:0 手机版
解决时间 2021-02-08 23:08
- 提问者网友:太高姿态
- 2021-02-08 15:18
最佳答案
- 五星知识达人网友:思契十里
- 2021-02-08 16:32
str="short string";这里已经把str指向short string"了,改成
strcpy(str,"short string");
strcpy(str,"short string");
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯