我有关于std :: map的查询.
如果我有一个std :: map,如:
std::map <T1, T2*> my_map;
T1 t;
T2* tt = new T2;
my_map[t]=tt;
Run Code Online (Sandbox Code Playgroud)
谁负责清理这个容器,T2的析构函数会处理它(T2*tt).此外,如果我想在整个程序中保留此容器,我应该在哪里清理它.
谢谢
地图会破坏地图中存储的对象.地图存储了一些T1将被销毁的对象,并存储了一些T2指针,这些指针将被销毁.
但它并没有存储实际T2的对象.所以没有T2对象会被破坏.
原始指针不具有所指向对象的所有权.因此,当指针被销毁时,它不会删除它指向的任何内容.
一般来说,当你有一个指针时,无法知道是否
delete对内存的一些随机的垃圾),new(如果它已经以另一种方式分配,它不应该被删除delete),或者delete.哪一个?)因此,即使您想要,也无法在指向它的指针被销毁时自动删除该对象.
| 归档时间: |
|
| 查看次数: |
1751 次 |
| 最近记录: |