Dan*_*iel -1 c++ memory-management vector
如果a vector包含一堆使用new然后解除引用而分配的元素,那么在vector删除这些元素时会释放这些元素的内存吗?例如:
vector<Obj> a = *(new vector<Obj>());
a.push_back(*(new Obj()));
delete &a;
Run Code Online (Sandbox Code Playgroud)
Obj创建的新内容是否已取消分配?
Moo*_*ice 10
这一切都将发生可怕的错误.首先,第一行上的赋值"a"现在在堆栈上(不是堆),并且您的new语句分配的内存现在丢失,泄露,消失.
其次,重新出现同样的情况.将构造并复制Obj().你的第二个记忆new永远在空间和时间的深处迷失.
然后尝试删除堆栈上分配的对象.这是程序崩溃和烧毁的地方,所有内存丢失都是无关紧要的.
vector<Obj> a;
Obj o;
a.push_back(o);
Run Code Online (Sandbox Code Playgroud)
注意:没有new或delete在视线内.C++不是Java.
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |