gpt4 book ai didi

c++ - 动态创建指针数组

转载 作者:搜寻专家 更新时间:2023-10-31 00:38:19 25 4
gpt4 key购买 nike

我正在尝试动态创建一个指针数组。从我读到现在的内容来看,这可以在 C++ 中通过以下方式完成

CPoint** data_temp;
data_temp = new CPoint*[an_integer];

稍后我将添加指向该数组的指针,该数组将指向一个对象。有些像这样,使用 for 循环

 CPoint A;
CPoint* data = &A; //I am using just a single value but data will also be an array
*data_temp[i] = data; // where data is pointer address

现在的问题是,如果为了释放内存,我删除指针数组 data_temp 是否也会删除原始对象,即 A

delete[] data_temp;

我问这个是因为我稍后需要这个对象。

最佳答案

delete[] 将是如果数组包含对象本身时要做的事情:这些对象将被自动销毁。但是,由于这是一个指针数组,您需要执行此操作以将其清空:

for (int i=0; i < num_objects; i++)
{
delete data_temp[i];
}

delete[] data_temp;

这将释放每个对象指向的内存,然后删除数组本身。

编辑:我刚刚注意到您在堆栈上分配了这些对象。如果你想像这样存储它们并自己管理内存,你应该在堆上分配它们,如下所示:

CPoint* A = new CPoint();
data_temp[i] = A;

...或者,如果堆栈上已经有一个 CPoint,并且 CPoint 有一个复制构造函数...

data_temp[i] = new CPoint(A);

关于c++ - 动态创建指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18334750/

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