boost::unordered_map 这东西有办法显示析构吗

2017-03-22 13:09:57 +08:00
 hailongs

貌似不能直接~unordered_map<int,int>()这样做

2096 次点击
所在节点    C
5 条回复
hyq
2017-03-22 13:55:10 +08:00
boost::unorderd_map<int, int> *mymap = (boost::unorderd_map<int, int> *)malloc(sizeof(boost::unorderd_map<int, int>));
mymap->boost::unorderd_map<int, int>(); // 手动调用构造函数
// do something
mymap->~boost::unordered_map<int, int>(); // 手动析构
free(mymap);
hyq
2017-03-22 13:55:52 +08:00
刚才写错了,函数名不需要命名空间

boost::unorderd_map<int, int> *mymap = (boost::unorderd_map<int, int> *)malloc(sizeof(boost::unorderd_map<int, int>));
mymap->unorderd_map<int, int>(); // 手动调用构造函数
// do something
mymap->~unordered_map<int, int>(); // 手动析构
free(mymap);
alqaz
2017-03-22 15:27:32 +08:00
试下 mymap->~unordered_map();
还有,我想说的是,你对 map 调用 malloc()然后强转,然后对 map do something,后面居然还要手动调用析构函数,小伙子,你思想很危险啊。
codehz
2017-03-22 16:32:19 +08:00
@hyq 用 placement new 不是更好么。。。手动调用构造函数要写一堆重复的东西
hyq
2017-03-22 18:55:42 +08:00
@codehz #4 这个可以有

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/349423

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX