2 young111111234 Young111111234 于 2016.03.25 11:37 提问

c++类中指针、堆对象的问题

当调用析构函数释放对象时,不写delete语句释放成员指针所指的堆空间,那对象释放完之后,该指针是消亡了呢,还是仍然存在?如果存在,它又是指向哪里?

3个回答

chen956
chen956   2016.03.25 11:59
已采纳

指针本身是变量,当对象释放的时候,会把对象所有成员的值都释放。所以指针会消亡,但是那块堆内存还占用着,造成内存泄露!

Young111111234
Young111111234 嗯嗯,谢谢啦
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2016.03.25 14:09

堆指针不delete,就会标记被使用,操作系统就不会回收,这样就会导致系统的内存泄漏。

u010850027
u010850027   2016.03.26 21:14

当对象释放的时候,会把对象所有成员的值都释放,所以指针会消亡,但是那块堆内存还占用着,造成内存泄露,不会被回收。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C/C++如何让类对象只在栈(堆)上分配空间?
在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。 1、静态建立类对象:是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。 2、动态建立类对象,是使用new运算符将对象建立在堆空间中。这个过程分为两步
栈对象,堆对象,对象指针
栈:空间小,速度快,能够自动释放对象 堆
C++对象指针数组与堆中对象数组
#include using namespace std; /*堆中对象数组、对象指针数组*/ class stu { public: void set(int x){i = x + 6;} int get(){return i*i;}; private: int i; }; void main() { const int n = 1000; stu * p = new stu[n];
[C/C++]_[中级]_[delete 类对象指针的注意事项]
场景: 1. C++类有构造和析构函数,析构函数是在类对象被delete时(或局部变量自动销毁时)调用来释放资源。 2. C++类对象指针很多情况下需要赋值给void*通用指针来达到传输对象的目的,但是往往这种void*指针就是造成内存泄漏或程序错误的根源, 这就是为什么C++存在泛型的目的,它也是为了在编译时刻消除这种对象不确定性,避免delete或使用时的错误. 好了,看代码,以下代码有什么问题?
Java中的对象类型像引用还是指针,谁是谁非?
Java中的对象类型像引用还是指针,谁是谁非?作者:海枫地址:http://blog.csdn.net/linyt 作为一名程序员,我们应该对新知识和新技术刨根问底,而不应泛泛而谈。我未曾接触到Java的时候,我想听得最多的东西还是关于Java中不存在指针的问题。此时,我会不断地想:如果Java不存在指针的话,那么是如何实现复杂的数据结构?这样的语言与VB有什么差别?如果一个静态过
C++中栈和堆的区别及区分对象存储在堆或栈中的方法
刚开始学习C++,记录下点点滴滴,同时也分享下 栈: 函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放,栈内分配运算内置于处理器的指令集中,效率高,但是分配的内存容量有限。 堆: 又称为动态内存分配,程序在运行的时候用new申请任意多少的内存,由程序员自己负责在何时用delete释放内存。动态内存的生存周期由我们决定,使用灵活,但是问题也比较多。 刚
c++ 局部对象指针及到底是在堆上创建的对象还是在栈上创建的?
~~~~我的生活,我的点点滴滴!!
Java中堆内存和栈内存_在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)。修改栈指针就可以把栈中的内容销毁.这样最快
java中内存分配策略及堆和栈的比较   1 内存分配策略    按照编译原理的观点,程序运行时的内存分配策略,分别是三种:a静态的,b栈式的,和c堆式的.  a.静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,
C++中堆栈对象实例化笔记
1:假设有一个学生类 class Student { public: int[20] numj; char[20] name; void getScore(); };class Student { public: int[20] numj; char[20] name; void getScore(); }; int main() { Student stu;//建立一个s
STL容器里存放对象还是指针?
http://blog.csdn.net/weiqubo/article/details/7291129 一.问题的引出: 容器可以存放对象,可以存放指针,这里要谈的是两者的使用问题。就是什么时候存放对象更好,什么时候存放指针更好? 二.问题的分析过程: 1. 首先说下stl容器的工作方式 对于内建类型(int float char等),容器的工作方式是纯粹的位拷贝,这里没有什么需要多