免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3229 | 回复: 8
打印 上一主题 下一主题

[C++] 关于内存释放问题 [复制链接]

论坛徽章:
1
2015亚冠之塔什干棉农
日期:2015-09-09 20:33:40
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-03 11:54 |只看该作者 |倒序浏览
对象的地址作为实参传给一个函数:

struct node A;

void fun(node *param)
{
...
}

fun(&A);

则在fun中要对param进行释放吗?如果node结构又有指针成员呢?

论坛徽章:
0
2 [报告]
发表于 2011-08-03 11:58 |只看该作者
看这个 struct node A; 在那块声明的,
如果是局部变量,就会有问题。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2011-08-03 13:11 |只看该作者
动态申请来的就需要,否则不需要

论坛徽章:
0
4 [报告]
发表于 2011-08-03 19:41 |只看该作者
你说的c++么?c++这样写会有警告。至少在linux下是有的。你应该new一个对象,这样得到的才是指针,这样做事要delete的!

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
5 [报告]
发表于 2011-08-03 21:31 |只看该作者
指针成员如果是new的话,就要,A的话不用。

论坛徽章:
0
6 [报告]
发表于 2011-08-03 21:34 |只看该作者
这种情况 最好是new一个,直接做没有多大好处

论坛徽章:
0
7 [报告]
发表于 2011-08-09 11:41 |只看该作者
绝对不要!
1)A 不是动态分配的
2)A 不属于fun, fun对A只有使用权, 但没有所有权

论坛徽章:
0
8 [报告]
发表于 2011-08-14 14:49 |只看该作者
内存分配了才需要释放,你malloc了就要想办法free,new了就不能忘记delete,没分配就不需要作,至于在哪里做是你自己的喜好。

论坛徽章:
0
9 [报告]
发表于 2011-08-15 16:37 |只看该作者
这个问题是个大坑啊. 关键看你想干什么了.

第一个问题好回答, 肯定不需要. 不关A是局部的还是全局的.  毕竟是A不是用new或者malloc分配的, 在离开生存空间空间之后,会被自动释放. (全局变量需要程序退出的时候,才被释放)

第二个问题,看你想干什么了.   如果是全局变量,还想share这些指针跟其他人用, 拿就不释放. 在函数中用完了,就不想要了,那就释放.  总之取决于你想干啥.
  局部变量,  也不好说, 不知道离开func 之后, A还能存在多久和干什么,所以不知道该不该释放.  如果离开A的定义范围之外, 没有释放,那肯定有问题, 因为有内存泄露.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP