帮忙看下下面的小程序,为什么free会报错?

jjyjjyjjy 2005-04-25 11:32:12
#include<stdio.h>
#include<stdlib.h>
char *Strcpy(char *strDest, const char *strSourc)
{
char *addressDest = strDest;
while ((*strDest++ = *strSourc++)!='\0')
NULL;
return addressDest;
}
void main()
{
char *p = "Hellp World!";
char *str = NULL;
str = (char*)malloc(sizeof(100));
printf("%s",Strcpy(str,p));
free(str);
}
...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
niuman 2005-04-26
  • 打赏
  • 举报
回复
应该没有问题DEV-C++编译通过。
OnlyHappy 2005-04-26
  • 打赏
  • 举报
回复
char *Strcpy(char *strDest, const char *strSourc)
{
while ((*strDest++ = *strSourc++)!='\0')
NULL;
return strDest;
}
void main()
{
char *p = "Hellp World!";
char *str = NULL;
str = (char*)malloc(sizeof(100));
printf("%s",Strcpy(str,p));
free(str);
}

我想这样应该可以了。我没有调试
kobefly 2005-04-26
  • 打赏
  • 举报
回复
str = (char*)malloc(sizeof(100));

100作为一个常数,默认是int型,也就是sizeof(int) == 4
所以你使用的空间大于你分配的空间导致溢出

free报错的原因基本上是由于溢出导致的

至于如何改,楼上已经给出
Zark 2005-04-26
  • 打赏
  • 举报
回复
问题在于这一句:
str = (char*)malloc(sizeof(100));

应该是

str = (char*)malloc(sizeof(char)*100);
jjyjjyjjy 2005-04-25
  • 打赏
  • 举报
回复
帮忙看下上面的小程序,为什么free会报错?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧