gpt4 book ai didi

c++ - 指针列表初始化和释放内存

转载 作者:行者123 更新时间:2023-11-30 03:49:22 60 4
gpt4 key购买 nike

在使用list时有哪些管理内存的好习惯,

当我们不再需要它时动态分配和释放(免费)。为了保持程序轻便并避免内存泄漏,确保良好的内存管理(我现在这是一个广泛的问题)

  1. 如何初始化指向最初有 N 个项目的对象的指针列表?我应该使用 operator new 来分配内存吗?
  2. 如果我想从列表和程序内存空间中完全删除(释放)一个项目,我应该使用 pop 还是 remove 或 erase ?差异?
  3. 我应该在迭代列表时使用运算符 delete 还是 .erase .remove 足以释放空间?

.

   class myclass { /* whatever attributes, methodes */  };

list<myclass *> lst (5); //5 pointers will be NULL this way

for (list<myclass *>::iterator it=lst.begin(); it != lst.end(); it++) {
myclass *obj= *it;
delete obj; //error
it = lst.erase(it);
}

最佳答案

C++ 具有值语义。列表拥有其上的对象。无论是int(内置类型)、std::string(库类型)还是myclass(你的)列表都是如此.确保您的类(class)可以被复制(或至少可以移动,但这是一个高级主题)。还要确保您的类析构函数正常工作,因为 list::clear 会调用它。

最初不要尝试使用指针列表。当您这样做时,使用智能 指针列表,但这已经是一个高级主题。应完全避免使用“哑”指针列表。

关于c++ - 指针列表初始化和释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32595712/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com