我有一个
struct trie {
map< char, struct trie* > m;
};
typedef struct trie trie;
然后我通过malloc by
启动内存trie* root = (trie*) malloc (sizeof(trie));
但是当我做的时候
root->m.clear();
它给出了分段错误。 我没理由!
答案 0 :(得分:1)
malloc函数分配所需的内存,但不会生成新对象。
解决方案1
相反,请使用new
关键字:
trie* root = new trie();
在你的程序结束时,不要忘记通过
发布它delete root;
解决方案2
另一种选择是在堆栈上生成此对象,而不使用指针。 这将按如下方式完成:
trie root;
在这种情况下,分配给该对象的内存将在范围的末尾自动释放。