尝试ptr-> map.clear()时的分段错误

时间:2017-06-18 07:56:33

标签: c++ segmentation-fault malloc

我有一个

struct trie {
    map< char, struct trie* > m;
};
typedef struct trie trie;

然后我通过malloc by

启动内存
trie* root = (trie*) malloc (sizeof(trie));

但是当我做的时候

root->m.clear();

它给出了分段错误。 我没理由!

1 个答案:

答案 0 :(得分:1)

malloc函数分配所需的内存,但不会生成新对象。

解决方案1 ​​

相反,请使用new关键字:

trie* root = new trie();

在你的程序结束时,不要忘记通过

发布它
delete root;

解决方案2

另一种选择是在堆栈上生成此对象,而不使用指针。 这将按如下方式完成:

trie root;

在这种情况下,分配给该对象的内存将在范围的末尾自动释放。