【发布时间】:2020-04-06 02:42:20
【问题描述】:
OctoMap代码中出现以下函数:
class AbstractOcTreeNode {}; -> 他们声明了一个空类
AbstractOcTreeNode** children; -> 这是在OcTreeDataNode 类头文件中声明的
template <typename T>
void OcTreeDataNode<T>::allocChildren() {
children = new AbstractOcTreeNode*[8];
for (unsigned int i=0; i<8; i++) {
children[i] = NULL;
}
}
这不会导致内存泄漏吗?不应该是:
template <typename T>
void OcTreeDataNode<T>::allocChildren() {
children = new AbstractOcTreeNode*[8];
for (unsigned int i=0; i<8; i++) {
delete children[i];
children[i] = NULL;
}
}
我错过了什么?感谢您的帮助!
【问题讨论】:
-
new AbstractOcTreeNode*[8]只是创建指针数组。该数组中包含的指针尚未指向AbstractOcTreeNode的任何实例。 -
实际上这些花括号之间有100行代码,其中有虚成员函数。它不是一个空的类。
标签: c++ memory-leaks empty-class octomap