用指针清理队列时,无尽的环路
Endlessloop while clearing queue with pointers
我有一个结构LastTimeon,其下一个指向相同结构的指针。我不想介绍后指针。我正在努力清理这种结构,您能帮我吗?可以在泵上进行多次打开,然后结构像pump1-> lasttimeon-> next-> next-> Next一样生长。该程序以无尽的循环REM2REM3REM4REM2REM3REM4等运行:
class Pump {
public:
LastTimeOn *lastTimeOn;
Pump();
};
class LastTimeOn{
public:
unsigned int dayOfWeek;
unsigned int hour;
unsigned int minute;
LastTimeOn(unsigned int minute1, unsigned int hour1, unsigned int dayOfWeek1);
LastTimeOn *next;
};
void clearLastTimeOn(Pump *pump1) {
Serial.print("REM1");
while (pump1->lastTimeOn != NULL) {
LastTimeOn *lastTimeOn = pump1->lastTimeOn;
Serial.print("REM2");
while (lastTimeOn->next != NULL) {
Serial.print("REM3");
lastTimeOn = lastTimeOn->next;
}
Serial.print("REM4");
delete lastTimeOn;
if (pump1->lastTimeOn->next == NULL){
Serial.print("REM4a");
delete pump1->lastTimeOn;
pump1->lastTimeOn = NULL;
}
}
Serial.print("REM5");
}
我创建这样的新数据:
lastTimeOn->next = new LastTimeOn(minute, hour, dayOfWeek);
只是一个快速的想法,我得到了...您将泵1-> lasttimeon传递给此:
void clearLastTimeOn(LastTimeOn* lastTimeOn)
{
while (lastTimeOn != nullptr)
{
LastTimeOn* current = lastTimeOn;
lastTimeOn = lastTimeOn->next;
delete current;
}
}
之后,您将pump1-> lastTimeon设置为nullptr。
class LastTimeOn{
public:
unsigned int dayOfWeek;
unsigned int hour;
unsigned int minute;
LastTimeOn(unsigned int minute1, unsigned int hour1, unsigned int dayOfWeek1);
LastTimeOn();
LastTimeOn *next;
~LastTimeOn() { delete this->next; }
};
void clearLastTimeOn(Pump *pump1) {
if (pump1)
delete pump1->lastTimeOn;
}
相关文章:
- 普通环路未使用gcc 4.8.5自动矢量化
- C++ - 标准输入环路
- 如何在arduino或Raspberrypi上制作600MHz环路?
- 为什么在环路条件中使用'<='而不是'<'会产生分段错误 [SIGSEGV]?
- 使用 std::mutex 保护环路
- 代码无尽写入文本文件的第一行
- 在信号槽机制与传统环路之间做出决定
- 在环路中使用 UDP 套接字时连接被拒绝
- 临时参考 C++11 上的环路的远程基座
- OpenMP 环路阵列访问中的错误共享
- 环路内开关的性能
- QT中的无限环路
- 超过8个字符的字符串导致无限环路C
- 无尽的循环
- 用指针清理队列时,无尽的环路
- 无盖插座的紧密RECV环路
- 在环路中使用模数会导致分段错误(磁芯转储)
- 可以提升::asio::async_read_until检测无尽的流
- 优化环路C
- 默认构造的地图迭代器以增量进入无限环路 - 绿色山丘编译器