gpt4 book ai didi

c++ - 从数组中删除单个指针

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:50 24 4
gpt4 key购买 nike

所以,如果有一个指针数组

stuff **items;
stuff *testPTR;
items = new stuff[200];

其中的内容用于保存动态内存对象

items[0] = new stuff;
items[1] = new stuff;
etc.
testPTR = items[0];

我想删除项目,为什么这不起作用?

delete items[0];
delete items[1];
etc.
delete [] items;

我测试了这段代码,我仍然可以访问使用我之前设置的 testPTR(在删除语句运行之后)分配的内容。

//stuff held in items[0] is still accessible with
*testPTR

我很困惑,因为如果我 cout items[any position] 我会得到一个内存地址,删除应该使用它来返回分配给东西的内存,但是上面的代码似乎留下了东西并且只删除了指针数组.我错过了什么?谢谢//编辑以使问题更清楚

最佳答案

delete items[0] 仅释放 items[0] 指向的内存,它不会将 items[0] 设置为 NULL。你必须自己做。

delete items[0];
items[0] = NULL;
etc

正如其他答案所指出的,内存的实际释放可能不会立即发生,但这是内存管理系统的一个实现细节,您不应该依赖它。

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

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