我有一个 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
方法,则我的记忆没有问题。有人可以告诉我什么可能导致内存泄漏?