【发布时间】:2012-09-23 02:00:09
【问题描述】:
我已经使用以下头文件定义了一个 C++ 类:
class EarleyParser
{
public:
EarleyParser();
virtual ~EarleyParser();
void initialize( string filePath, bool probabilityParse );
private:
bool probabilityParser;
typedef unordered_map< string, list<Production>* > productionHashTable;
productionHashTable earlyHashTable;
};
如你所见,该类的成员元素是 unordered_map,其关键元素是字符串,内容元素是指向另一个名为 Production 的类的对象列表的指针(不要介意,它可以是任何东西)。
我的问题是我是否应该将它留给默认析构函数来释放分配的内存,或者我是否应该手动检查哈希表并删除它的所有元素。
在第二种情况下,程序是什么?为每个元素调用这个可以吗?
EarleyParser::productionHashTable::const_iterator got = this->earlyHashTable.find( "key" );
delete[] got->second;
【问题讨论】:
-
如果这个对象拥有这个列表,那么你应该在那里删除它。使用共享指针而不是指向列表的原始指针 - 然后它将自行删除。
-
如果我应该把它留给默认构造函数来释放分配的内存 - 你的意思是析构函数吗?
-
@Component10 - 当然...感谢您指出...
-
@Wojciech - 你能再具体一点吗?谢谢...
标签: c++ pointers memory-leaks unordered-map delete-operator