我有一个Arduino的项目,我创造了这个结构:这个代码可以导致内存泄漏(Arduino的)
struct Project {
boolean status;
String name;
struct Project* nextProject;
};
在我的应用程序分析一些数据,并创建Project
对象。为了让它们在列表中有一个指向nextProject
的指针,在每个Project
对象期望最后一个。这是我添加新的项目代码:
void RssParser::addProject(boolean tempProjectStatus, String tempData) {
if (!startProject) {
startProject = true;
firstProject.status = tempProjectStatus;
firstProject.name = tempData;
firstProject.nextProject = NULL;
ptrToLastProject = &firstProject;
} else {
ptrToLastProject->nextProject = new Project();
ptrToLastProject->nextProject->status = tempProjectStatus;
ptrToLastProject->nextProject->name = tempData;
ptrToLastProject->nextProject->nextProject = NULL;
ptrToLastProject = ptrToLastProject->nextProject;
}
}
firstProject
是一个私有的实例变量,并在头文件中这样定义:
Project firstProject;
所以如果确实没有加入项目中,我使用firstProject
,添加一个新的,如果设置了firstProject
我使用nextProject
指针。
另外我有一个reset()
方法删除指针项目:
void RssParser::reset() {
delete ptrToLastProject;
delete firstProject.nextProject;
startProject = false;
}
了每个解析运行后我打电话reset()
问题是,使用的内存不会被释放。如果我注释掉addProject
方法,我的记忆没有问题。有人可以告诉我什么可能导致内存泄漏?
在调用'reset()'之前可能会抛出异常(例如操作符'new'或任何部分代码) – Ruu