【发布时间】:2015-02-25 14:38:48
【问题描述】:
我有一个类似 STL 的映射实现,其中指针作为键。正如我注意到的那样,地图不会释放钥匙。因为我无法保留对所有指针的引用,所以我自己无法管理内存。我读了一些关于智能指针的文章,提出了两个问题:
- 除了使用 智能指针?
- 当键不再存在或被地图中的另一个指针覆盖时,像 Boosts Smart Pointer 这样的智能指针会释放我的内存吗?
感谢您的帮助。
【问题讨论】:
-
为什么要使用指针作为键?你想做什么?
-
如果您希望在映射中不再存在键时释放内存(即映射负责其键的内存......),指针是什么?
-
通常值是你需要删除的东西,而不是键。价值是多少?
-
@NeilKirk 键是一个无符号字符数组,用 malloc 分配。该值只是一个整数。
-
那很糟糕。使用
std::vector或std::array和自定义比较器。