delete-operator相关内容

在Qt中使用';new';声明变量而不使用Delete

从this post中,我可以得出结论,在Qt: 中声明新小部件有两种主要方式(当然还有其他方式) 未使用new关键字: QLabel lb; lb.setText("a"); 使用new关键字: QLabel *lb = new QLabel; lb->setText("a"); 因此,在我的一些教程中,我看到讲师使用了第二种方法,之后没有使用delete。根据我从很多文 ..

在C++中是否兼容Malloc/Free和new/Delete?

很好地比较了Malloc/Free和new/Deletehere,并很好地解释了Malloc()和Free()是如何工作的here。显然,我们不应该将它们混为一谈--使用Free和new,或使用DELETE和Malloc。 我们可以看到很多开源项目,有许多贡献者,同时使用这两种机制,同时尊重上面的“不混合”规则。通常,在一个文件中只有一种方式(一个作者,一个偏好)。我已经分叉了这样一个项目, ..
发布时间:2022-06-11 22:09:48 C/C++开发

重新分配指针时删除运算符的用法

在将指针重新分配给另一个指针时,是否需要始终删除该指针, 示例: int value = 5; int* ptr{ new int{} }; // allocate memory ptr = &value; // old address lost, memory leak results 我知道这有助于防止内存泄漏,但这在所有情况下都是可取的吗?有没有这样一种情况:在ptr=&;值 ..
发布时间:2022-06-11 21:57:07 C/C++开发

何时使用新建和删除

我正在重读一段时间以前关于C++的代码(我现在正在学校学习Java),我有点困惑什么时候必须使用delete。 例如: 声明两个对象时: Fraction* f1; Fraction* f2; 和创建f1和f2如下: f1 = new Fraction(user_input1, user_input2); f2 = new Fraction(user_input3, user ..
发布时间:2022-06-11 21:42:56 C/C++开发

C++删除动态数组的最后一个元素

在C++中,我获取了n个元素的动态数组 int* a = new int[n]; 在将数组所有元素左移后,最后一个元素,即a[n-1]是无用的,我想删除它。 右移后,我需要删除数组的第一个元素,并有一个指向第二个元素的指针,即我需要创建一个长度为n-1的数组。 我如何才能做到这一点? 推荐答案 您需要分配一个新数组,并将原始数组的元素复制到新数组。 这里是一个演示程序 ..
发布时间:2022-05-23 14:01:04 C/C++开发

删除 NULL 指针是否安全?

删除NULL指针安全吗? 这是一种好的编码风格吗? 解决方案 delete 无论如何都会执行检查,因此在您这边检查会增加开销并且看起来更丑陋.非常好的做法是在 delete 之后将指针设置为 NULL(有助于避免重复删除和其他类似的内存损坏问题). 如果 delete 默认情况下将参数设置为 NULL,就像在 中一样,我也很高兴 #define my_delete(x) { ..

delete[] 是否等于删除?

IP_ADAPTER_INFO *ptr=new IP_ADAPTER_INFO[100]; 如果我免费使用 删除指针; 会不会导致内存泄露,如果不是那为什么? 这是VS2005生成的反汇编代码 ;删除指针;0041351D mov eax,dword ptr [ptr]00413520 mov dword ptr [ebp-0ECh],eax00413526 mov ecx,dwo ..
发布时间:2022-01-30 16:20:10 C/C++开发

删除指向 const (T const*) 的指针

我有一个关于 const 指针的基本问题.我不允许使用 const 指针调用任何非 const 成员函数.但是,我可以在 const 指针上执行此操作: 删除p; 这将调用本质上是一个非常量“方法"的类的析构函数.为什么允许这样做?是不是只是为了支持这个: 删除这个; 还是有其他原因? 解决方案 为了支持: //动态创建不可更改的对象常量 Foo * f = 新的 Foo;//这 ..
发布时间:2022-01-23 23:08:17 C/C++开发

在堆栈上分配的变量上调用 delete

忽略编程风格和设计,对分配在堆栈上的变量调用 delete 是否“安全"? 例如: int nAmount;删除 &nAmount; 或 类示例{上市:样本();~sample() { 删除 &nAmount;}int n数量;} 解决方案 否,在堆栈分配的变量上调用 delete 是不安全的.你应该只对 new 创建的东西调用 delete. 对于每个 malloc 或 ..
发布时间:2022-01-22 12:01:26 C/C++开发

在 c++0x 中删除 nullptr 仍然安全吗?

在c++03 中,很明显删除空指针没有效果.事实上,§5.3.5/2 中明确指出: 无论哪种方式,如果 delete 的操作数的值是空指针,则操作无效. 但是,在当前草案中,c++0x 这句话好像少了.在草案的其余部分,我只能找到说明如果 delete-expression 的操作数不是空指针常量会发生什么的句子.删除空指针是否仍然在c++0x中定义,如果是,在哪里? 注意事项: ..
发布时间:2022-01-06 22:32:32 C/C++开发

C++中delete和delete[]的区别

可能的重复: C++ 中的删除与删除[] 运算符 我写了一个包含两个指针的类,一个是 char* color_ 一个是 vertexesset* vertex_ 其中 vertexesset 是一个我创建的类.在我开始时写的析构函数中 删除[] color_;删除 [] 顶点_; 当涉及到析构函数时,它给了我一个分段错误. 然后我将析构函数改为: 删除[] color_;删除顶 ..
发布时间:2021-12-24 17:01:52 C/C++开发

删除指向子类的指针是否调用基类析构函数?

我有一个 class A,它为它的一个字段使用堆内存分配.类 A 被实例化并作为指针字段存储在另一个类中(class B. 当我处理完 B 类的对象时,我调用 delete,我假设它调用了析构函数...但这是否也调用了类 A 的析构函数? 编辑: 从答案中,我认为(如果不正确,请编辑): delete B 的实例调用 B::~B(); 调用A::~A(); A::~A ..

为什么不删除将指针设置为 NULL?

我一直想知道为什么在 delete 之后将指针自动设置为 NULL 不是标准的一部分.如果这一点得到处理,那么许多由于无效指针导致的崩溃就不会发生.但话虽如此,我可以想到标准会限制这一点的几个原因: 性能: 附加指令可能会降低 delete 的性能. 可能是因为 const 指针. 然后,我猜标准本可以为这种特殊情况做一些事情. 有人知道不允许这样做的确切原因吗? ..
发布时间:2021-12-24 16:41:22 C/C++开发

删除与删除[]

可能的重复: (POD)释放内存:delete[]等于delete吗? 当我学习 C++ 时,那是很久以前的事了.我被告知永远不要使用 delete 但 delete[] 因为在单个对象上执行 delete[] 将等同于 delete.知道不要太相信老师,我想知道这是真的吗? 是否有理由调用 delete 而不是 delete[]? 我已经扫描了 SO 中可能相关的问题,但没有 ..
发布时间:2021-12-24 16:38:45 C/C++开发

C++ 删除向量、对象、空闲内存

我对在 C++ 中删除内容完全感到困惑.如果我声明了一个对象数组并且我使用了 clear() 成员函数.我能确定内存被释放了吗? 例如: tempObject obj1;临时对象 obj2;矢量温度矢量;tempVector.pushback(obj1);tempVector.pushback(obj2); 我可以安全地调用 clear 来释放所有内存吗?还是需要 ..
发布时间:2021-12-21 13:22:13 C/C++开发

通过另一个指针删除指向类中多维数组的指针 - 如何?

我有一个指向类的指针,它有一个指向多维数组的指针,但我似乎无法在需要时将其从内存中删除或将其设置为 NULL. #define X 10#define Y 10结构体测试类{上市:int *pArray[X][Y];};//不同的尝试,都不起作用:删除 Pointer_To_TestClass->pArray[0][0];delete[] Pointer_To_TestClass->pArray ..

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

我在玩一点内存动态分配,但我没有明白.当使用 new 语句分配一些内存时,我应该能够使用 delete 销毁指针指向的内存. 但是当我尝试时,这个 delete 命令似乎不起作用,因为指针指向的空间似乎没有被清空. 让我们以这段真正基础的代码为例: #include 使用命名空间标准;int main(){//我创建了一个指向整数的指针 pTest,让它指向一些新的空间,//并用一个 ..
发布时间:2021-12-21 10:06:33 C/C++开发

指针是否保证在 C++ 中的“删除"之后保留其值?

灵感来自这个问题. 假设在 C++ 代码中我有一个有效的指针并正确地删除它.根据 C++ 标准,指针将变为无效(3.7.3.2/4 - 释放函数将使指向释放存储的所有部分的所有指针无效). 至少在大多数实现中,它会保留该值,并将存储与 delete 之前完全相同的地址,但是 使用该值是未定义的行为. 标准是否保证指针将保留其值或允许值更改? 解决方案 不,不能保证,实现可 ..
发布时间:2021-12-13 13:09:38 C/C++开发