首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在精确索引处从指针的动态数组中删除指针?

如何在精确索引处从指针的动态数组中删除指针?
EN

Stack Overflow用户
提问于 2022-04-16 18:07:29
回答 1查看 103关注 0票数 1

当我们手头有动态指针数组时,假设我们要删除该数组的第三个索引,并将较高的指针复制到一个槽中。

Q1:我们需要删除第三个元素吗?

Q2:在我们删除aPtr3并为aPtr3分配新指针之后会发生什么?

代码部分做我想做的事情吗?

“”“

代码语言:javascript
代码运行次数:0
运行
复制
A **aPtr = new A*[10];

for(int i=0; i< 10; i++)
{
    aPtr[i] = new A;
}

delete aPtr[3];

for(int i=3; i<9; i++)
{
    aPtr[i] = aPtr[i+1];
}

“”“

另一个问题,不考虑前一个问题。当我们要删除指针数组中的所有元素时,是否也需要语句"delete [] aPtr;“?

“”“

代码语言:javascript
代码运行次数:0
运行
复制
A **aPtr = new A*[10];

for(int i=0; i< 10; i++)
{
    aPtr[i] = new A;
}


for(int i=0; i<10; i++)
{
    delete aPtr[i];
}

delete[] aPtr; //<-----Is this line required to free the memory?

“”“

EN

回答 1

Stack Overflow用户

发布于 2022-04-17 00:07:27

除了一个例外,您的代码看起来不错。

代码语言:javascript
代码运行次数:0
运行
复制
delete aPtr[3];

for(int i=3; i<9; i++)
{
    aPtr[i] = aPtr[i+1];
}

添加以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
aPtr[9] = nullptr;

否则,aPtr8和aPtr9都指向相同的位置,稍后当您删除整个事件时,您将双删除该指针。

否则,它看起来不错。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71896325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档