问题标签 [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 投票
1 回答
510 浏览

c++ - itoa 会删除字符吗?

为什么这会给我一个内存错误?

是否itoa删除aVar? 如何知道 C++ 函数是否删除了指针,是否有约定?

如果我这样做,则不会发生错误:

0 投票
2 回答
458 浏览

c++ - 数组缩小时是否需要删除元素?

我是一名学生,正在编写一种方法,该方法在 C++ 中从整数数组的末尾删除零。该数组在一个结构中,并且该结构还有一个 int 来跟踪数组的长度。

该方法从最后一个元素开始检查每个元素,直到遇到第一个非零元素,并通过更改长度值将其标记为“最后一个元素”。然后该方法返回到原始的“最后一个元素”,删除那些未超出范围的元素(零)。

如果数组的更新长度大于数组的更新长度,则删除i数组中第 th 个元素的部分,如下所示:i

不过,那条线是错误的。删除需要一个指针,是吗?所以我的感觉是我需要恢复指向数组的指针,然后添加i到它,这样我就会有我要删除的整数的内存位置。

我的直觉错了吗?错误很微妙吗?或者,我有完全错误的想法吗?我开始怀疑:我真的需要释放这些原语吗?如果它们不是我需要的原语,在这种情况下,我会怎么做?

0 投票
1 回答
189 浏览

c++ - 通过观察者调用外部逻辑时如何保护数据结构的一致性?

我目前正在重构一个应用程序,如果它们的状态发生变化,类可以在其中调用观察者。这意味着无论何时都会调用观察者:

  • 类更改的实例中的数据
  • 创建类的新实例
  • 类的实例被删除

正是这最后一个案例让我担心。

假设我的班级是 Book。观察者存储在一个名为 BookManager 的类中(BookManager 还保存所有书籍的列表)。这意味着我们有这个:

如果一本书被删除(从列表中删除并从内存中删除),则调用观察者:

问题是我无法控制观察者的逻辑。观察者可以通过插件或客户开发人员编写的代码来交付。

因此,尽管我可以编写这样的代码(并且我确保在删除实例的情况下获得列表中的下一个):

观察者总是有可能从列表中删除其他书籍:

在这种情况下,如果列表包含托尔金的书,然后是卡尔萨根的书,则删除所有托尔金书的循环可能会崩溃,因为下一个迭代器 (itNext) 已无效。

图示的问题也可能出现在其他情况下,但删除问题是最严重的,因为它很容易使应用程序崩溃。

我可以通过确保在应用程序中首先获取我想要删除的所有实例,将它们放入第二个容器中,然后遍历第二个容器并删除实例来解决这个问题,但由于总是存在观察者显式删除了已经在我的待删除列表中的其他实例,我必须放置显式观察者以使第二个副本也保持最新。

还要求所有应用程序代码在调用观察者(直接或间接)时在容器上迭代时复制列表,这使得编写应用程序代码变得更加困难。

是否有 [设计] 模式可用于解决此类问题?最好不要使用共享指针方法,因为我不能保证整个应用程序都使用共享指针来访问实例。

0 投票
8 回答
190457 浏览

c++ - 删除 NULL 指针是否安全?

删除 NULL 指针是否安全?

它是一种好的编码风格吗?

0 投票
3 回答
884 浏览

c++ - 释放内存

对于一个项目,我必须实现一个 bitset 类。到目前为止,我的代码是:

头文件

源文件

我的问题是我在解构器和分配方法核心转储中的删除语句。不需要释放这个内存吗?从我目前所读到的内容来看,每当你调用 new 时,总是需要使用 delete 命令。

编辑:我已经更改了上面的代码以反映其中一个修复程序。我在构造函数中添加了 bitset = NULL。这修复了分配方法中的核心转储,但是我仍然在解构器中遇到错误。

0 投票
5 回答
42290 浏览

c++ - 删除指向指针的指针(作为数组数组)

我的代码中有这个:

我该如何删除这个desc

我应该这样做:

或者

或者

?

0 投票
5 回答
7707 浏览

c++ - 在循环中创建新的指针对象

说我做这样的事情

在循环中使用指针对象后是否需要删除它?我在想,如果我不删除它,它将继续创建一个新对象 10 次,然后该对象就挂在那里,吃资源。

0 投票
4 回答
84378 浏览

c++ - 删除与删除[]

可能重复:
(POD)释放内存:delete[] 等于 delete 吗?

当我学习 C++ 时,这是很久以前的事了。我被告知永远不要使用delete,但在单个对象上delete[]执行delete[]将等同于delete. 知道不要太相信老师,我想知道,这是真的吗?

有没有理由打电话delete而不是打电话delete[]

我已经扫描了 SO 中可能相关的问题,但没有找到任何明确的答案。

0 投票
2 回答
413 浏览

c++ - C++ delete 语句的动态是什么?

这只是出于好奇,因为除了最基本的用途外,我没有在 c++ 中使用过new和。delete

我知道这delete会释放内存。我想知道的是它如何处理更复杂的情况?

例如,如果我有一个这样的用户定义类:

假设该类以某种方式为 分配内存intArray,然后在析构函数中释放它,如果我像这样使用该类会怎样:MyClass* myClass = new MyClass();并稍后释放它delete myclass;

如何delete处理所有内存的释放?是否首先调用类析构函数来释放类分配的所有内存(即int* intArray),然后释放分配给类的内存?

如果我有这样的课怎么办:

假设anotherMyClass没有分配构造函数,这会很快耗尽内存,如果有一个 MyClasses 链像链表一样相互连接怎么办?在这种情况下,析构函数中的删除语句会起作用吗?当析构函数被调用时,每个都会anotherMyClass被递归释放吗?

您所知道的newand语句是否有任何特定的奇怪技巧或警告?delete

0 投票
6 回答
1732 浏览

c++ - 如果你在 C++ 中删除它会发生什么

可能重复:
使用“delete this”删除当前对象可以吗?

我刚刚看到他们delete this;在类函数中完成的一些代码,我知道这不是一个好的设计,但它定义了会发生什么,可以说类总是来自某个地方的指针。它总是会以正确的方式被删除吗?