如果构造函数new了一个对象并使用成员指针变量保存的话,那么必须在析构函数delete它,这句话是什么意思

如果构造函数new了一个对象并使用成员指针变量保存的话,那么必须在析构函数delete它,这句话是什么意思,这句话本身的含义出在哪里?如果一个对象是继承了其他东西,或者某... 如果构造函数new了一个对象并使用成员指针变量保存的话,那么必须在析构函数delete它,这句话是什么意思,这句话本身的含义出在哪里?
如果一个对象是继承了其他东西,或者某些成员被标记了virtual的话,绝对不要memset。对象是独立的,也就是说父类内部结构的演变不需要对子类负责。哪天父类里面加了一个string成员,被子类一memset,就欲哭无泪了。
还有这句话是什么意思?

问题的题目来自vczh的博客,关于内存泄漏的说法
展开
 我来答
匿名用户
2016-06-24
展开全部
析构函数和构造函数,应该是public才行,这样外部才能调用。析构函数用来释放对象的,如果你的对象不是动态生成的,是不需要释放的。如你的inttest,这不是动态生成的,是不需要释放的。下面我写一个例子给你:#includeusing namespace std;class Test{public: char * buffer;public: Test(char * input) { buffer = new char[100]; strcpy(buffer, input); cout << buffer << endl; } ~Test() { // 这里要手动释放,如果不手动释放,会有内存泄露的 if (NULL != buffer) { delete buffer; buffer = NULL; } }};void main(){ Test test("hello");}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式