gpt4 book ai didi

c++ - 正确的结构内存管理

转载 作者:行者123 更新时间:2023-11-28 00:50:06 26 4
gpt4 key购买 nike

我想确保没有发生内存泄漏。

   struct tStruct{
uint32_t id;
A* a;
C b;
};
std::vector<tStruct*> m_vector;

我按照以下方式将对象插入和删除到 vector 中。

推送:

tStruct* myStruct = new tStruct;
myStruct->id = ID; // Some unique value
myStruct->a= new A();
myStruct->b = c; // c is an object
m_vector.push_back(myStruct);

删除:

 // Some stuff here 
for (uint32_t i = 0; i < m_vector.size(); i++) {
if (m_vector.at(i)->id == ID) { // Some filtering
delete m_vector.at(i);
m_vector.erase(m_vector.begin() + i);
}
}

我理解的对吗

  1. 我需要明确地删除 myStruct->a,因为它是在堆中分配的?
  2. 对于其他成员,他们将在堆栈中自动删除。

最佳答案

经验法则:如果你有一个new,你必须有一个相应的delete。与 C 中的 malloc 和 free 相同。

关于c++ - 正确的结构内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600684/

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