首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 析构函数不影响内置类型或指针类型成员,不内存泄漏吗?该怎么处理

2012-04-27 
C++ 析构函数不影响内置类型或指针类型成员,不内存泄漏吗?C++primer 上说C++ 析构函数不影响内置类型或指

C++ 析构函数不影响内置类型或指针类型成员,不内存泄漏吗?
C++primer 上说C++ 析构函数不影响内置类型或指针类型成员,我主要是想问一下,内置类型分配的空间是怎样回收的
例如:
?class A{
public:
? A(int c){
? a=c;
? }
private:
? int a;
}
A *p=new A(9);
delete p;
在删除p所指向的对象时调用A的析构函数,但是析构函数不影响内置类型,这样a的内存空间是怎样释放的?会不会造成内存泄露?

[解决办法]
不会的
[解决办法]
就和你普通函数里面的的int a; 一样.它是怎么释放,就怎么释放的
[解决办法]
int 是内置类型,但A不是。你delete p释放了整个A类型变量p,包括其中的int a。

既然它们是在一次new里面产生的,就阻挡不了delete把它们一次释放光。
[解决办法]
a是对象的一个数据成员,他的内存的释放是随着对象内存的释放而释放的。
[解决办法]
楼主的代码正确,没有问题。
[解决办法]
只要自定义的你调用了析构函数就不会内存泄露,楼主问的内置类型是怎么释放的,其实现在不用特别关注这个,感觉如果是初学阶段的话,方向有点偏。
? 只要关心你定义的类型就可以,内置类型的处理肯定是由语言的设计者来考虑的事情。
[解决办法]
每个类型的长度都是一定的
所以delete的时候 释放的size是一定的
所以你delete 对象指针 跟delete数组一样的
但是这个size里万一有指针 而这指针指向了由该对象分配的内存
那么 堆指针指向的堆内存 就泄露了
[解决办法]
如果你是用malloc开辟的内存空间就用free释放,如果你是用new开辟的内存空间就用delete释放,如果都不是,该内存的生存周期一过,自动释放~?
但是不必纠结它是怎么释放的,他其实A的一部分,随A释放释放

热点排行