社区
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编译器编译
...全文
147
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
作业
写回复
配置赞助广告
用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出来的空间"丢失"了.
人物
施放
魔法代码
按方向键控制人物移动,按空格键
施放
魔法。
星际争霸鼠标方案
星际争霸 鼠标 经典版 , 不是常见版
翻车机重牛钢绳快速
施放
装置的设计使用.pdf
翻车机重牛钢绳快速
施放
装置的设计使用.pdf
winxp与win7漂亮的星际争霸鼠标主题
一款个人认为很漂亮的鼠标主题,右键点击压缩包内的安装文件.inf安装完成,再在控制面板内的鼠标类型设置完成即可使用。
施放
烟幕的小乌贼作文.doc
施放
烟幕的小乌贼作文.doc
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章