avatar
j*h
1
我对STL不熟,请教一个问题。加入我定义了一个类
class foo {
hash_map table;
void addvalue(const string & key, int value) {
table[key] = value;
}
}
假设foo的一个对象a,调用了很多次addvalue, 在a对象析构的时候,没有对a做table.
clear(),或者逐个erase所有的key,会有memory leak吗?换句话说,hash_map的析构
函数会自动释放所有的key, value所使用的内存吗?
avatar
s*u
2
析构的时候会delete掉

【在 j*****h 的大作中提到】
: 我对STL不熟,请教一个问题。加入我定义了一个类
: class foo {
: hash_map table;
: void addvalue(const string & key, int value) {
: table[key] = value;
: }
: }
: 假设foo的一个对象a,调用了很多次addvalue, 在a对象析构的时候,没有对a做table.
: clear(),或者逐个erase所有的key,会有memory leak吗?换句话说,hash_map的析构
: 函数会自动释放所有的key, value所使用的内存吗?

avatar
j*g
3
如果dtor的时候释放,我是不是可以理解为push_back或者operator[]用的是传值参数
,存入的实际是原来对象的一个副本?
不然的话如果有其他对象引用被存入的对象的话就会有问题。
avatar
t*t
4
STL way: copy in, copy out.

【在 j****g 的大作中提到】
: 如果dtor的时候释放,我是不是可以理解为push_back或者operator[]用的是传值参数
: ,存入的实际是原来对象的一个副本?
: 不然的话如果有其他对象引用被存入的对象的话就会有问题。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。