社区
C语言
帖子详情
为什么这样施放指针有错呢?不解
raygts
2006-06-25 11:30:16
int main
{
char *test1=NULL;
char out[]="Hello\0";
test1 = (char *)malloc(256);
test1 = out;
printf("Test len:%ld \n",strlen(test1));
free(test1); //报错!!!!
return 0;
}
gcc 3.4.3编译器编译
...全文
158
8
打赏
收藏
为什么这样施放指针有错呢?不解
int main { char *test1=NULL; char out[]="Hello\0"; test1 = (char *)malloc(256); test1 = out; printf("Test len:%ld \n",strlen(test1)); free(test1); //报错!!!! return 0; } gcc 3.4.3编译器编译
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tailzhou
2006-06-25
打赏
举报
回复
test1 = (char *)malloc(256); test1指向堆
test1 = out; test1指向栈
栈是系统自动释放的,只能释放指向堆的指针
crazy_lazy_pig
2006-06-25
打赏
举报
回复
呵呵, 如果要用指针指向out的话, 那就不用释放了呀, 如果一定要释放还一定要指向out, 那么就这样:
test1 = (char *)malloc(256);
free(test1); //呵呵, 好玩.
test1 = out;
Alaylm
2006-06-25
打赏
举报
回复
test1 = out; 改成strcpy(test1,out);楼主是这意思不?
triace_zhang
2006-06-25
打赏
举报
回复
栈里的变量不用手动释放,变量的生存期完了之后编译器会执行弹栈动作,自动释放变量的内存段。
Alaylm
2006-06-25
打赏
举报
回复
strcpy();
raygts
2006-06-25
打赏
举报
回复
那怎么样释放这个指针啊???我想用指针哦
xyq1986
2006-06-25
打赏
举报
回复
二楼的说得没错,要用free就不要再用out对test1贼值了
crazy_lazy_pig
2006-06-25
打赏
举报
回复
同意楼上的.
另外, 在test1=out时发生了内存泄漏, 先前alloc出来的空间"丢失"了.
人物
施放
魔法代码
按方向键控制人物移动,按空格键
施放
魔法。
星际争霸鼠标方案
星际争霸 鼠标 经典版 , 不是常见版
winxp与win7漂亮的星际争霸鼠标主题
一款个人认为很漂亮的鼠标主题,右键点击压缩包内的安装文件.inf安装完成,再在控制面板内的鼠标类型设置完成即可使用。
翻车机重牛钢绳快速
施放
装置的设计使用.pdf
翻车机重牛钢绳快速
施放
装置的设计使用.pdf
北京
施放
气球资质年检报告书.doc
北京
施放
气球资质年检报告书.doc
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章