用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");
}
运行后提示:
求助 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));
应该是大小不够,你只申请了一个字符的长度