在类里面声明了一个成员指针,实现的时候在一个for循环里new对象,这种指针该怎么delete?
时间: 2024-02-13 08:06:25 浏览: 19
在使用指针时,如果使用了new关键字进行动态内存分配,就需要在使用完毕后手动释放内存,否则会出现内存泄漏问题。对于在循环中使用new关键字动态分配内存的情况,可以在循环结束后,使用一个循环来释放内存。
具体的实现方法如下所示:
```c++
// 声明一个成员指针
class MyClass {
private:
MyObject* ptr;
public:
MyClass() {
ptr = nullptr;
}
~MyClass() {
delete ptr;
}
void createObjects(int num) {
// 循环创建对象
for(int i = 0; i < num; i++) {
MyObject* obj = new MyObject();
// 将对象加入到一个链表中
// ...
}
}
void deleteObjects() {
// 循环释放对象
MyObject* cur = ptr;
while(cur) {
MyObject* temp = cur;
cur = cur->next;
delete temp;
}
// 释放链表的头指针
ptr = nullptr;
}
};
```
在上面的代码中,MyClass类声明了一个成员指针ptr,该指针指向MyObject对象。在createObjects函数中,使用for循环动态创建了多个MyObject对象,并将它们加入到链表中。在deleteObjects函数中,使用while循环逐个释放链表中的对象,并将链表头指针置为nullptr。
这样可以保证在循环结束后,所有动态分配的内存都被正确地释放掉,避免了内存泄漏问题的发生。