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



我有一个

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;

在这种情况下,分配给此对象的内存将在作用域结束时自动释放。

最新更新