首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

用malloc/free进行动态申请,释放遇到的有关问题

2013-09-15 
用malloc/free进行动态申请,释放遇到的问题动态申请内存空间用于存放未知长度的待输入字符串,程序结束后fr

用malloc/free进行动态申请,释放遇到的问题
动态申请内存空间用于存放未知长度的待输入字符串,程序结束后free,出现问题,请教如何修改,主要代码如下
void main()
{
 
char *str;
        char *sub_str;
str=(char*)malloc(sizeof(char));
sub_str=(char*)malloc(sizeof(char)); 
printf("请输入给定的字符串:\n");
scanf("%s",str);
printf("请输入要删除的子串:\n");
scanf("%s",sub_str);
char result[100];
printf("%d\n%s\n",delete_sub_str(str,sub_str,result),result);
free(str);
free(sub_str);
system("pause");
}
运行后提示:
用malloc/free进行动态申请,释放遇到的有关问题
求助 free malloc
[解决办法]
str和sub_str只分配了一个字节的空间,只够存放一个结束符'\0'而已:
str=(char*)malloc(sizeof(char));
sub_str=(char*)malloc(sizeof(char)); 
应该多分配,以免操作越界,越界的话结果难料:
str=(char*)malloc(sizeof(char) * 1000);
sub_str=(char*)malloc(sizeof(char) * 1000); 


[解决办法]

str=(char*)malloc(sizeof(char));
sub_str=(char*)malloc(sizeof(char)); 


应该是大小不够,你只申请了一个字符的长度

热点排行