社区
C语言
帖子详情
为什么不能FREE呢?
yilin54
2010-03-18 09:24:27
typedef struct
{
int a;
char *b;
int c;
}A;
int main(int argc, char* argv[])
{
A* p=(A*)malloc(sizeof(A));
char* tmp="ss";
A a={1,tmp,2};
p=&a;
free(p);
//为什么这个P不能FREE啊?
p=NULL;
}
...全文
79
8
打赏
收藏
为什么不能FREE呢?
typedef struct { int a; char *b; int c; }A; int main(int argc, char* argv[]) { A* p=(A*)malloc(sizeof(A)); char* tmp="ss"; A a={1,tmp,2}; p=&a; free(p); //为什么这个P不能FREE啊? p=NULL; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cy330206
2010-03-18
打赏
举报
回复
[Quote=引用 6 楼 yuzl32 的回复:]
引用 4 楼 yilin54 的回复:
哦。,FREE是不是只能Free堆区域的内存啊?
malloc出来的内存,都可以free.刚才p掉了下包,LZ就不知道该释放谁了. :-)
[/Quote]
呵呵
yilin54
2010-03-18
打赏
举报
回复
感谢各位啦~~
yuzl32
2010-03-18
打赏
举报
回复
[Quote=引用 4 楼 yilin54 的回复:]
哦。,FREE是不是只能Free堆区域的内存啊?
[/Quote]
malloc出来的内存,都可以free.刚才p掉了下包,LZ就不知道该释放谁了. :-)
柯本
2010-03-18
打赏
举报
回复
free 只能Free申请的内存指针.
yilin54
2010-03-18
打赏
举报
回复
哦。,FREE是不是只能Free堆区域的内存啊?
柯本
2010-03-18
打赏
举报
回复
[Quote=引用 1 楼 thefirstz 的回复:]
你的p现在已经不再指向堆中的内存了,当然不能free了
[/Quote]
已经说的很时白,一般动态申请的内存指针不能随便再赋值,否则free要出错的
cy330206
2010-03-18
打赏
举报
回复
p=&a;
楼主去掉这句试试,,我这里的编译器没有报错
昵称很不好取
2010-03-18
打赏
举报
回复
你的p现在已经不再指向堆中的内存了,当然不能free了
软件测试入门视频教程
软件测试入门视频培训教程:该课程将带你走进“软件测试”的大门,具体内容包括软件测试环境搭建、软件开发模型、产品模型、CMM模型、测试用例、等价类划分、边界值划分、白盒测试、单元测试、bug
free
搭建、系统测试...
malloc后为什么要
free
?
为什么malloc后一定要
free
呢?
new的数据能用
free
吗?
我的标题是我今天看到的一个面试题,...凭自己的直觉吧,猜了个“不可以”的答案,虽然对了,但我不知道为什么。于是 我就查查资料了: 不可以,new对应delete不可以张冠李戴。 malloc/
free
,new/delete必需
C语言malloc动态分配内存
free
释放问题,为什么要释放?释放过后再次分配,内存块是怎样变化的?释放过后的内存为什么
不能
再用了?
C语言malloc动态分配内存
free
释放问题,为什么要释放?释放过后再次分配,内存块是怎样变化的?释放过后的内存为什么
不能
再用了?
c++中有了malloc/
free
,为什么还需要new/delete?
一:malloc/
free
是c/c++中的...这是因为对象在创建的同时需要自动执行构造函数,对象在消亡之前要自动执行析构函数,而由于malloc/
free
是库函数而不是运算符,不在编译器的控制权限内,也就
不能
自动执行构造函数和析...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章