【发布时间】:2010-06-17 13:13:59
【问题描述】:
如果我有vector<string*> *vect 或map<pair<string*, int*>, string*> *map,
如何清理所有内容(包括矢量/地图包含的所有对象)?
(所有 (vector, map, contents, string, ints) 都用new分配)
这就够了:
delete vect;
delete map;
【问题讨论】:
-
为什么要在容器中存储指针?尤其是 int* 很可能是错误的。
-
@Rudi:哦,我是 C++ 新手。它有什么问题?
-
int* 只是浪费性能而没有任何好处,但即使是 string* 也意味着手动管理创建和删除,以及其中隐含的风险。只需使用字符串和整数,您的删除操作就会为您整理好一切
-
@Martijn Courteaux:在几乎所有现代建筑中,
int*将占用与int一样多的空间,甚至更多。更不用说原始指针带来的痛苦了。除非绝对需要,否则避免在C++中使用指针。 -
@David & ereOn:感谢您的解释。
标签: c++ memory-management vector map