我有一个
struct trie {
map< char, struct trie* > m;
};
typedef struct trie trie;
然后我通过 malloc 初始化内存
trie* root = (trie*) malloc (sizeof(trie));
但是当我这样做时
root->m.clear();
它给出了分段错误。我不明白原因!
malloc 函数分配所需的内存,但它不会生成新对象。
解决方案 1
请改用new
关键字:
trie* root = new trie();
在程序结束时,不要忘记通过以下方式发布它
delete root;
解决方案 2
另一种选择是在堆栈上生成此对象,而不使用指针。这将按如下方式完成:
trie root;
在这种情况下,分配给此对象的内存将在作用域结束时自动释放。