【发布时间】:2020-11-01 02:32:19
【问题描述】:
我在读一个geeksforgeeks_implementation_of_trie,发现new创建的TrieNode对象未被删除,在main函数中有一个未被删除的指针root:
struct TrieNode *root = getNode();
在函数getNode() 中还有未删除的指针pNode,是否有内存泄漏?是否应该有一个函数负责销毁由指针组成的trie树?
struct TrieNode *getNode(void)
{
struct TrieNode *pNode = new TrieNode;
pNode->isEndOfWord = false;
for (int i = 0; i < ALPHABET_SIZE; i++)
pNode->children[i] = NULL;
return pNode;
}
【问题讨论】:
-
如果这返回一个
std::unique_ptr而不是一个原始指针,那就没有问题了...... -
那个“极客”网站的代码很差。很少,如果有没有错误的实际代码示例。所以是的,它会泄漏内存。
-
struct TrieNode*应该表明编写代码的人不知道c++或者是通过使用c实现c++来偷懒
标签: c++ memory-management memory-leaks trie