gpt4 book ai didi

c++ - 删除指向结构的指针数组

转载 作者:太空狗 更新时间:2023-10-29 20:31:41 26 4
gpt4 key购买 nike

我有以下结构:

struct Message {
Agent *_agent;
double _val;
};

和以下 Ptrs 数组:

typedef Message* MessageP;
MessageP *_msgArr;
_msgArr = new MessageP[MAX_MESSAGES];

这是向数组中插入消息的方法:

void Timing::AddMessage(Agent * const agentPtr, double val) {

MessageP msgPtr = new Message;
assert(msgPtr != 0);

//assign values:
(*msgPtr)._agent = agentPtr;
(*msgPtr)._val = val;

//add to messages array:
assert(_msgArr != 0 && _waitingMsgs<MAX_MESSAGES);
_msgArr[_waitingMsgs] = msgPtr;
_waitingMsgs++;

}

我的问题是关于这个数组的删除。我想删除数组和所有分配的结构。如果我写:

delete [] _msgArr  

这会同时删除每个分配的结构还是只会释放分配给数组的内存?

正确的方法是用for循环遍历整个数组然后写

delete _msgArr[i]

最后使用 delete [] _msgArr 删除分配的数组?

谢谢!

最佳答案

是的,您需要遍历所有元素并手动删除它们,然后再对数组调用delete[]

关于c++ - 删除指向结构的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3678235/

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