问题标签 [delete-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
503 浏览

c++ - C++ delete operator confusion

Possible Duplicate:
( POD )freeing memory : is delete[] equal to delete ?

0 投票
10 回答
119923 浏览

c++ - C++ 中是否允许“删除这个”?

delete this;如果删除语句是将在该类的实例上执行的最后一条语句,是否允许?当然,我确定由this-pointer 表示的对象是newly-created 的。

我正在考虑这样的事情:

我可以这样做吗?

0 投票
6 回答
213 浏览

c++ - 不清楚“删除”和指针

假设我们有一段代码:

最后一行的作用与上面的完全一样,对吗?所以我现在会是delete一个无效/空指针?

我知道这可能是一个愚蠢的问题,但我仍然需要一些保证。

0 投票
3 回答
2124 浏览

c++ - g++ 双重免费或腐败...但是如何?

我的代码似乎有问题,想知道你们是否可以帮助我找到问题...我尝试使用 gdb 和 valgrind,后者“更”有用,但我仍然无法修复我的错误。

下面是我的课程代码(这是我的缩小版,但问题的主要本质仍然存在):

/* 矢量.h */

/* 物理状态.h */

/* 物理状态.cpp */

/* 测试.cpp */

对不起,长度。这是 valgrind 的输出:

提前感谢任何可以帮助我的人,这让我发疯了!GD。

PS:我=(*这个);无= 0;

0 投票
4 回答
934 浏览

c++ - 编写函数来释放指针并将其分配为 NULL

我在最近的一次采访中被问到这个问题,基本上是编写一个函数来结合 free 和分配 null 的功能。我是这样回答的:

因此,在执行之后,ptr本地 tomain将在我从newdelete函数返回它时保存 null 值。如果我刚刚分配NULL了 newdelete 函数,则ptr本地 tonewdelete将被清空,而不是ptr本地 to main

我认为我的解决方案是正确的,面试官也接受了。然而,他期待着其他的答案。他坚持我不NULL从函数返回,但仍然达到预期的结果。

有没有办法做到这一点?我能想到的只是传递另一个参数,它是指向ptr本地指针的指针main,但我不明白为什么它比我所做的更好!

0 投票
3 回答
1187 浏览

c++ - 在指向同一个对象的两个指针上调用 delete

我正在尝试编写的几个事件处理程序类有问题。基本上,这个想法是为每个逻辑对象组创建一个事件处理程序类。在大多数情况下,事件发生在对象及其处理程序之间,但在某些情况下,事件也在处理程序对象之间发送。

我编写了代码,以便将事件放置在堆栈上(堆栈与用户创建的结构一样;事件本身是使用 分配的new)和deleted 在读取并执行其信息后。这给我带来了一些问题,因为在一种情况下,事件是沿着三个处理程序的链发送的。比如说,HandlerA发送一个new Eventto HandlerB,它将它放在堆栈上并读取它,将它发送到HandlerC,它读取它并执行它需要执行的任何操作,然后它delete是 Event 指针并将其设置为NULL。现在,我们回到HandlerB并且,好吧,它也想deleteNULL指向事件的指针。但是指针是一个局部变量,它最终会删除两次相同的地址,从而引发异常。

你怎么解决这个问题?您是否需要使用其中一个花哨auto_ptr的 s(在这里仍然是早期学习者),还是我在这里缺少一些基本的东西?

0 投票
9 回答
9208 浏览

c++ - 为什么删除不破坏任何东西?

我正在玩一些内存动态分配,但我不明白。当使用new语句分配一些内存时,我应该能够破坏指针指向的内存 using delete

但是当我尝试时,这个delete命令似乎不起作用,因为指针指向的空间似乎没有被清空。

让我们以这段真正基本的代码为例:

有什么线索吗?

0 投票
4 回答
242 浏览

javascript - 从 JavaScript 对象中删除 falsies

因此,我编写了一个简短的函数来从具有虚假值的对象中删除成员:

几天后,我检查了源代码控制,有人将其更改为:

登记入住没有评论,而且这个人今天不在工作。

哪个实现更好?每种方法的性能影响是什么?

0 投票
5 回答
920 浏览

c++ - 双免腐败

我有一个班级呼叫网格。该类包含两个用于存储网格的 2d 字符数组...该类具有两个函数,用于为网格创建内存和释放网格的内存。

网格.h

网格.cpp

问题发生在我收到以下错误的内存释放中。

我已经检查了我所有的指针,它们在执行过程中没有被更改为其他东西,而且人们能想到的每一个制衡都在发生。在过去的几个小时里,我一直在拔头发,但仍然一无所获。

我在 ubuntu 10 系统上使用 gcc 运行它。

还应该注意,为了这篇文章的目的,我已经更改了名称等,并且只包含了我认为有价值的代码。

编辑:

修复了语法问题,但是原始代码有这个我只是快速输入并没有校对。

非常感谢任何帮助,并且在我的书中值得一颗金星。我是 gdb 的高级用户,并且在这个问题上使用过这个,但我认为这可能是外部库中的一个问题。我看不出内存有任何问题,也看不到它的范围,只是希望有人看到这样的东西。出于所有目的,此代码都很好。

0 投票
10 回答
18531 浏览

c++ - 在 C++ 中释放指针的 std::vector 的正确方法是什么?

我搜索了 StackOverflow,但找不到这个问题的答案。

假设我有一个std::vector<Day *> vector_day- 即 - 一个指向Day对象的指针向量。现在我push_backvector_day很多元素:

现在在某些时候我不再需要vector_day. 释放内存的正确方法是什么?

这是正确的方法:

这不会在每次删除时使向量无效吗?我很困扰。