实例化和删除对象C ++

顽皮的忍者

我试图实例化一个对象,然后再将其删除,我在做什么错呢?

default:
        //Instantiate object of the ErrorHandler class
        errPtr = new ErrorHandler();
        //Print the error message to the console screen
        errPtr->showError("Invalid input, please select option 1 or 2, and press enter.");
        delete errPtr;
        errPtr->showError("hello"); //This line is being executed normally like object still exist.
        break;

我的问题是我怎么能称呼showError(); 对象删除后的方法?

SteJ

实例化和删除的方式没有任何问题-发生的事情取决于内存分配的方式(或者在这种情况下更合适的分配方式)。

当您free()delete在c ++中)堆内存时,它只是将其标记为可用-不会清除您的指针或它以前指向的内存;这样做会降低性能,尤其是在您的对象很大的情况下。一切都保留在内存中,直到其他人使用它为止。

由于errPtr在您之后直接使用delete,因此该对象仍在内存中。

C ++不会在删除指针后阻止您使用指针,但是这样做是一个非常糟糕的主意,因为您的指针现在指向的内存可能会被其他对象使用。

基本上,您在这里做错的是在释放指向其的内存后使用指针。删除对象后,您就不能再引用它了-您必须相信,一旦调用,内存就可以释放了delete

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实例化和删除对象C ++

来自分类Dev

用不同的对象实例化c ++ Vector

来自分类Dev

C ++实例化“隐式”类对象

来自分类Dev

实例化对象的堆栈分配C ++

来自分类Dev

实例化类对象的客观C错误

来自分类Dev

未知的 c++ 对象实例化语法

来自分类Dev

C++ 对象实例化内存位置

来自分类Dev

实例化对象(C#.net)中的所有属性和子属性

来自分类Dev

实例化对象(C#.net)中的所有属性和子属性

来自分类Dev

C#中new<object>(){}和new<object>{}实例化对象的区别

来自分类Dev

在 C# 中使用基类和派生类实例化数组中的对象

来自分类Dev

如何实例化和使用包含其他对象的对象?

来自分类Dev

对象和实例之间的区别:C ++

来自分类Dev

C#foreach和对象实例

来自分类Dev

C ++对象实例化-使用空括号实例化对象时调用哪个构造函数

来自分类Dev

实例化对象后定义吸气剂和吸气剂

来自分类Dev

基本的面向PHP对象的实例化和依赖注入

来自分类Dev

使用Spring实例化对象以进行测试和生产

来自分类Dev

Scala:实例变量和对象初始化

来自分类Dev

使用模块模式和实例化新对象之间的区别

来自分类Dev

Javascript对象实例化大小和方法的巨大性能差异

来自分类Dev

我如何从Assetbundle加载和实例化任何游戏对象?

来自分类Dev

复制和修改用于实例化javascript的相似对象

来自分类Dev

从CFML访问JAVA类和函数-对象实例化异常

来自分类Dev

通过列表迭代和实例化游戏对象

来自分类Dev

实例化和填充对象数组的更快方法

来自分类Dev

将对象存储在数组中以进行实例化和修改实例化(Java)

来自分类Dev

实例化文件对象

来自分类Dev

对象的递归实例化?

Related 相关文章

热门标签

归档