Pas*_*sha 0 c++ memory pointers allocation reference
我试图了解如果一个类创建另一个类,如何回馈内存.
我有
Clas A;
Run Code Online (Sandbox Code Playgroud)
然后另一个为A类分配内存的类:
class B{
private:
A* data;
public:
// Allocating new memory
B (){
A* data = new A();
//giving memory back
~B(){
delete data; };
};
Run Code Online (Sandbox Code Playgroud)
当我在main函数中执行代码时,它就崩溃了.怎么了?我在这里有点迷失.谢谢.
摆脱A*构造函数中的冗余.这样做是创建一个与您的类成员同名的新的局部变量.所以真正的B::data永远不会分配任何东西,当你试图删除它时,事情就会爆发.为了增加对伤害的侮辱,new A()你分配给当地人data将被泄露(好吧; 如果程序没有崩溃,它将被泄露).
class B{
private:
A* data;
public:
// Allocating new memory
B (){
data = new A();
}
//giving memory back
~B(){
delete data;
}
};
Run Code Online (Sandbox Code Playgroud)
这解决了眼前的问题,但正如juanchopanza在评论中指出的那样,如果你试图复制这个对象,你仍然会遇到问题.
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |