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

c++ - 在 C++ 中重载删除运算符

在我的代码中,我重载了newanddelete运算符来获取文件名和行号。在我的代码中,我使用mapand stack。当我从映射中删除特定值时,它只是调用我的重载delete函数,但我只希望显式delete语句能够访问我的函数,而不是其他函数。我怎样才能做到这一点?

0 投票
7 回答
2728 浏览

c++ - 是否需要删除存储为静态局部变量的数组,以及如何删除?

我有几个数组和一个需要删除的资源,这些变量的值在程序的整个生命周期中都会保留,它们只在单个函数中使用,因此它自然适合静态变量:

但是,如果我使用静态,我将无法删除这些资源,因为我无法从函数外部访问这些变量。我可以制作这些全局变量,但如果可能的话,我想避免这种情况。

所以问题是:

  1. arrs[] 是堆栈分配还是堆分配?那么,我需要删除它吗?
  2. 在 GLUquadric 的情况下,显然编译器不知道如何正确删除它,现在我使用了一个运行良好的RAII包装类,但我正在寻找是否有更简单的方法。

valgrind 抱怨没有发布 GLUquadric,我想我只是清理它而不是让 valgrind 静音,即使当我释放它们时程序应该即将结束并且这些资源可能(?)在程序结束时释放.

0 投票
4 回答
415 浏览

c++ - 为什么 C++ 中有一个 delete[]?

为什么有一个delete[]?据我了解,它对数组的行为不同。然而,它为什么真的存在呢?C中只有free,没有free_array。delete var同样在语法上,和之间的唯一区别delete []var[]没有参数(我没有告诉数组的长度)。

那么为什么delete[]真的存在呢?我知道有人会说你可以超载delete并且delete[](至少我认为这是可能的)但是可以说我们没有超载它。它为什么存在?

0 投票
6 回答
3225 浏览

c++ - 如何释放指针向量?

如何释放指针向量中的内存?这是代码:

我发现.erase()它不会释放内存,也不会调用析构函数;我尝试delete在每个列表条目上使用迭代,但在一次迭代后崩溃。已经检查了列表条目是否已经为 NULL,以避免任何错误。我错过了什么吗?另外,我必须只使用 STL,不需要 Boost。

0 投票
5 回答
458 浏览

c++ - 不使用“new”在 C++ 中创建对象

我想制作一个程序,现在可以说表示一个矩阵,该矩阵将由一个向量表示,该向量中的每个对象都将表示一个单元格示例:vector now 当构造矩阵时,构造函数接收要插入的单元格列表矩阵。列表的大小在编译时是未知的

我有兴趣在不使用堆内存的情况下创建这个矩阵。换句话说,不使用“new”或“delete”这个词创建对象,如果我不知道有多少对象要插入向量中,有什么办法吗?

0 投票
5 回答
4414 浏览

c++ - 对于向量中的指针,我们应该在擦除之前还是之后删除?

我们应该删除之前还是之后erase。我的理解是两者都可以。这是正确的吗?

此外,是否有任何情况下我们不想在删除元素时删除它?我相信一定有,否则,erase会很乐意承担责任。

0 投票
1 回答
1301 浏览

c++ - 新建/删除“覆盖”与“重载”

我一直以为...

  • 覆盖意味着在基类中重新实现一个函数(相同的签名),而
  • 重载意味着实现同名但不同签名的函数

...并感到困惑,因为有时人们只是不关心差异。

关于新/删除:它们是重载还是被覆盖?

一个想法:

  • 在 Class = 重载中实现 new/delete 运算符
  • 重新实现全局 new/delete = override

有任何更正/建议/反对意见吗?并随时标记问题“头发分裂”......

0 投票
1 回答
330 浏览

c++ - 从模板列表中删除对象

我有一个模板列表说,

在 mList 中添加了子类的对象。

在从列表中删除对象时,我是否需要将对象转换为相应的子类并调用 delete 方法?

0 投票
4 回答
4369 浏览

c++ - 如何删除模板?

我无法删除我的模板。
我的模板和析构函数:

我的堆和析构函数:

这是包含模板的对象,我也遇到了问题:

这里有什么问题?

0 投票
6 回答
380 浏览

c++ - 从堆栈中删除对象

从堆栈中手动删除对象是不好/非法的 C++,还是在某些情况下可以接受?

编辑

有什么方法可以检查对象是在堆上还是在堆栈上?