g***j 发帖数: 1275 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: gmadj (姑妈爱大舅), 信区: JobHunting
标 题: 问一个constructor的问题
发信站: BBS 未名空间站 (Sat Oct 13 10:59:01 2012, 美东)
当constructor里面的某个member在initialization的时候fail了,到底会有memory
leak么?其他的已经完成的member到底由谁来释放?是系统自己自动释放还是需要在
catch exception之后用户写代码来自己释放?
我曾经看过说“C++里面没有partially constructed object, 只有full constructed
object”,难道不是说没有memory leak么?
为什么在Effective C++里面有这样一句话“if an exception is thrown during
construction of an object, any parts of the object that have already been
fully constructed are automatically destroyed”,这是不是说,只要throw
exception就够了,不需要在catch之后在代码里面释放? 如果这样,是不是说哪怕
fail也没有memory leak了?
总之,这个地方很confuse,谁来解释一下? | g*****y 发帖数: 7271 | 2 member variables会自动释放,但是如果你是用的pointer指向自己new出来的memory的
话,你就得自己释放。所以建议是用smart pointer作为member,不要用raw pointer
constructed
【在 g***j 的大作中提到】 : 【 以下文字转载自 JobHunting 讨论区 】 : 发信人: gmadj (姑妈爱大舅), 信区: JobHunting : 标 题: 问一个constructor的问题 : 发信站: BBS 未名空间站 (Sat Oct 13 10:59:01 2012, 美东) : 当constructor里面的某个member在initialization的时候fail了,到底会有memory : leak么?其他的已经完成的member到底由谁来释放?是系统自己自动释放还是需要在 : catch exception之后用户写代码来自己释放? : 我曾经看过说“C++里面没有partially constructed object, 只有full constructed : object”,难道不是说没有memory leak么? : 为什么在Effective C++里面有这样一句话“if an exception is thrown during
| b*******s 发帖数: 5216 | 3 smart pointers和containers一起用时,有时有点问题
【在 g*****y 的大作中提到】 : member variables会自动释放,但是如果你是用的pointer指向自己new出来的memory的 : 话,你就得自己释放。所以建议是用smart pointer作为member,不要用raw pointer : : constructed
|
|