问题标签 [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.
c++ - C++ 中是否允许“删除这个”?
delete this;
如果删除语句是将在该类的实例上执行的最后一条语句,是否允许?当然,我确定由this
-pointer 表示的对象是new
ly-created 的。
我正在考虑这样的事情:
我可以这样做吗?
c++ - 不清楚“删除”和指针
假设我们有一段代码:
最后一行的作用与上面的完全一样,对吗?所以我现在会是delete
一个无效/空指针?
我知道这可能是一个愚蠢的问题,但我仍然需要一些保证。
c++ - g++ 双重免费或腐败...但是如何?
我的代码似乎有问题,想知道你们是否可以帮助我找到问题...我尝试使用 gdb 和 valgrind,后者“更”有用,但我仍然无法修复我的错误。
下面是我的课程代码(这是我的缩小版,但问题的主要本质仍然存在):
/* 矢量.h */
/* 物理状态.h */
/* 物理状态.cpp */
/* 测试.cpp */
对不起,长度。这是 valgrind 的输出:
提前感谢任何可以帮助我的人,这让我发疯了!GD。
PS:我=(*这个);无= 0;
c++ - 编写函数来释放指针并将其分配为 NULL
我在最近的一次采访中被问到这个问题,基本上是编写一个函数来结合 free 和分配 null 的功能。我是这样回答的:
因此,在执行之后,ptr
本地 tomain
将在我从newdelete
函数返回它时保存 null 值。如果我刚刚分配NULL
了 newdelete 函数,则ptr
本地 tonewdelete
将被清空,而不是ptr
本地 to main
。
我认为我的解决方案是正确的,面试官也接受了。然而,他期待着其他的答案。他坚持我不NULL
从函数返回,但仍然达到预期的结果。
有没有办法做到这一点?我能想到的只是传递另一个参数,它是指向ptr
本地指针的指针main
,但我不明白为什么它比我所做的更好!
c++ - 在指向同一个对象的两个指针上调用 delete
我正在尝试编写的几个事件处理程序类有问题。基本上,这个想法是为每个逻辑对象组创建一个事件处理程序类。在大多数情况下,事件发生在对象及其处理程序之间,但在某些情况下,事件也在处理程序对象之间发送。
我编写了代码,以便将事件放置在堆栈上(堆栈与用户创建的结构一样;事件本身是使用 分配的new
)和delete
d 在读取并执行其信息后。这给我带来了一些问题,因为在一种情况下,事件是沿着三个处理程序的链发送的。比如说,HandlerA
发送一个new Event
to HandlerB
,它将它放在堆栈上并读取它,将它发送到HandlerC
,它读取它并执行它需要执行的任何操作,然后它delete
是 Event 指针并将其设置为NULL
。现在,我们回到HandlerB
并且,好吧,它也想delete
和NULL
指向事件的指针。但是指针是一个局部变量,它最终会删除两次相同的地址,从而引发异常。
你怎么解决这个问题?您是否需要使用其中一个花哨auto_ptr
的 s(在这里仍然是早期学习者),还是我在这里缺少一些基本的东西?
c++ - 为什么删除不破坏任何东西?
我正在玩一些内存动态分配,但我不明白。当使用new
语句分配一些内存时,我应该能够破坏指针指向的内存 using delete
。
但是当我尝试时,这个delete
命令似乎不起作用,因为指针指向的空间似乎没有被清空。
让我们以这段真正基本的代码为例:
有什么线索吗?
javascript - 从 JavaScript 对象中删除 falsies
因此,我编写了一个简短的函数来从具有虚假值的对象中删除成员:
几天后,我检查了源代码控制,有人将其更改为:
登记入住没有评论,而且这个人今天不在工作。
哪个实现更好?每种方法的性能影响是什么?
c++ - 双免腐败
我有一个班级呼叫网格。该类包含两个用于存储网格的 2d 字符数组...该类具有两个函数,用于为网格创建内存和释放网格的内存。
网格.h
网格.cpp
问题发生在我收到以下错误的内存释放中。
我已经检查了我所有的指针,它们在执行过程中没有被更改为其他东西,而且人们能想到的每一个制衡都在发生。在过去的几个小时里,我一直在拔头发,但仍然一无所获。
我在 ubuntu 10 系统上使用 gcc 运行它。
还应该注意,为了这篇文章的目的,我已经更改了名称等,并且只包含了我认为有价值的代码。
编辑:
修复了语法问题,但是原始代码有这个我只是快速输入并没有校对。
非常感谢任何帮助,并且在我的书中值得一颗金星。我是 gdb 的高级用户,并且在这个问题上使用过这个,但我认为这可能是外部库中的一个问题。我看不出内存有任何问题,也看不到它的范围,只是希望有人看到这样的东西。出于所有目的,此代码都很好。
c++ - 在 C++ 中释放指针的 std::vector 的正确方法是什么?
我搜索了 StackOverflow,但找不到这个问题的答案。
假设我有一个std::vector<Day *> vector_day
- 即 - 一个指向Day
对象的指针向量。现在我push_back
要vector_day
很多元素:
现在在某些时候我不再需要vector_day
. 释放内存的正确方法是什么?
这是正确的方法:
这不会在每次删除时使向量无效吗?我很困扰。