C++类的对象内存的释放

我在用C++写人事管理系统时,在实现删除功能时,有没有什么办法直接删除类的对象所占有的空间
那如果不是new出来的 可以用指针指示他 然后释放吗

不知道你对内存分配有没有了解啊
看你的对象是怎么实例的 如果直接实例 不用new 内存是在栈上分配 那么你就不需要担心类所占的空间 在这个对象的生命周期结束之后就会自己回收内存
如果是通过new那么 内存是在堆上分配 如果你不使用delete删除类 那么就会内存泄露

如果你说 不是new出来的 用指针指象 然后释放 不知道是不是这种情况
class A{};
A newA_One;
A* newPtr;

newPtr = &newA_One;

这个用指针指向是可以的,不过你不能用delete去释放它 因为这个对象的地址是在栈上面 这个对象生命周期就是在这个使用对象的区域内
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-30
如果你这个类对象是new出来就可以, delete就可以了

是不是可以“直接释放”那取决于你的程序具体怎么写的了

只有new的才可以delete, 只有malloc的才可以free
第2个回答  2010-06-30
不明白问什么

正常都要
1删除数据库数据
2删除类对象

两者一起操作的方法sdk里面么有这个功能。
第3个回答  2010-06-30
class CRecord {
...
};
CRecord * s = new CRecord[100];
delete [] s;
s = 0;

C++类的对象内存的释放
如果是通过new那么 内存是在堆上分配 如果你不使用delete删除类 那么就会内存泄露 如果你说 不是new出来的 用指针指象 然后释放 不知道是不是这种情况 class A{};A newA_One;A* newPtr;newPtr = &newA_One;这个用指针指向是可以的,不过你不能用delete去释放它 因为这个对象的地址是在栈上面 ...

C++中类类型数组如何释放
用delete []释放就可以了。C++中对于不需要逐个析构的类型(本身的析构函数没有操作,并且所有基类和成员的析构函数都没有操作,称为trivally destructible)的对象数组,释放的时候单纯就是把整个数组占用的内存释放(这个时候用delete或者delete[]结果上都是一样的,但是不建议直接用delete)。而对于需要...

C++ char*类型new的内存释放出问题了
记住:内存释放了之后不能再使用该块内存,最好在释放之后将指针变量赋值为空 。delete [] q;q= NULL;C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++14于2014年8月18日公布。 其编程领域众广,常用于系...

请教一个C++内存释放的问题!
(1)如果是分配数组内存,释放时需要使用 [] 如;int *p=new int[10];delete []p; \/\/由于分配数组需要使用 [](2)当多个指针共享一个内存时,只要释放一次就可以了,因为他们指向同一个地方。释放两次会发生错误吧。你这里就只能释放一次了。

C++中如何释放list类的内存?
list中的内存是自动管理的,不需要你去释放。如果你通过new申请了一个list对象,在使用结束后你仍需要delete来释放这个对象本身的内存。

C++ 如果类中有一个指针数据成员,而我没有用new, 析构函数要不要delete...
C++ 如果类中有一个指针数据成员,而你没有用new, 析构函数是不用delete的?在类中,int char 这些只要不是new的,也同样不用释放,系统会自动把他们占的内存释放掉,只有new 的才会手动的去delete。int char ,这些基本类型,是局部变量,存在于栈上。而一个指针定义的时候,也是在栈上比如int *p...

在C++中,使用malloc申请的内存能否通过delete释放?使用new申请的内存...
malloc \/free的操作对象都是必须明确大小的。而且不能用在动态类上。new 和delete会自动进行类型检查和大小,malloc\/free不能执行构造函数与析构函数,所以动态对象它是不行的。当然从理论上说使用malloc申请的内存是可以通过delete释放的。不过一般不这样写的。而且也不能保证每个C++的运行时都能正常。

c\/c++中内存映射和释放
所谓映射就是一个简单的备份,或者叫重定向.至于内存的释放,一般在程序中,栈区的内存会被系统自动回收,系统的内存管理机制请参考其他资料.现在由于语言的不同,对堆区的内存管理方式也不同,不过一般需要手动释放,也就是把内存归还系统并且在程序中忘记此地址以防止重用.不明白请追问 ...

C\/C++内存申请和释放(一)
然而,动态内存的释放也同样重要,这由free函数完成。在使用完动态内存后,记得调用`free(array)`释放内存,以防止内存泄漏。在实际编程中,要特别注意内存的释放,特别是当程序可能提前退出或者在异常情况下。以上所有示例都是在Windows 10环境下,使用Visual Studio 2017 64位编译器进行测试。在实际使用时...

c++(在类中)执行buf=new char[i];delete []buf; 为什么没有调用构造...
\/\/只有创建类的对象时才会调用此类的构造函数。\/\/只有对象的内存空间被释放时,即对象超出了作用域,\/\/亦即对象的生命期即将结束时,才会调用析构函数。\/\/下面是一个例子。include<iostream> using namespace std;class A { public:A(string n):name(n){ cout<<name<<",调用构造函数"<<endl;}...

相似回答