
如果构造函数new了一个对象并使用成员指针变量保存的话,那么必须在析构函数delete它,这句话是什么意思
如果构造函数new了一个对象并使用成员指针变量保存的话,那么必须在析构函数delete它,这句话是什么意思,这句话本身的含义出在哪里?如果一个对象是继承了其他东西,或者某...
如果构造函数new了一个对象并使用成员指针变量保存的话,那么必须在析构函数delete它,这句话是什么意思,这句话本身的含义出在哪里?
如果一个对象是继承了其他东西,或者某些成员被标记了virtual的话,绝对不要memset。对象是独立的,也就是说父类内部结构的演变不需要对子类负责。哪天父类里面加了一个string成员,被子类一memset,就欲哭无泪了。
还有这句话是什么意思?
问题的题目来自vczh的博客,关于内存泄漏的说法 展开
如果一个对象是继承了其他东西,或者某些成员被标记了virtual的话,绝对不要memset。对象是独立的,也就是说父类内部结构的演变不需要对子类负责。哪天父类里面加了一个string成员,被子类一memset,就欲哭无泪了。
还有这句话是什么意思?
问题的题目来自vczh的博客,关于内存泄漏的说法 展开
1个回答
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");}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询