博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)delete和析构函数两者之间的联系
阅读量:6816 次
发布时间:2019-06-26

本文共 1155 字,大约阅读时间需要 3 分钟。

delete用于释放new在堆中动态生成的对象空间。
释放时会自动调用类的析构函数,在析构函数中用于释放类内部动态分配的得到的资源。
simple:
#include <iostream>
using std::cout;
using std::endl;
class Simple{
public:
Simple(){
p = new int; //使用new分配空间
*p = 10;
pArray = new int[*p]; //使用new分配数组空间
for(int i = 0; i < *p; i++)
pArray[i] = i;
}
~Simple(){
cout << "\ndisconstuctor\n" << "now delete p" << endl;
delete p;
cout << "now delete pArray" << endl;
delete [] pArray; 
//注意这里的释放配对
}
public:
void out(){
cout << "p value = " << *p << endl;
for(int i = 0; i < *p; i++)
{
cout << "array is " << *(pArray + i) << endl;
}
}
private:
//disable copy & assign control
Simple(const Simple&);
const Simple& operator=(const Simple&);
private:
int *p;
int *pArray;
};
int main()
{
Simple* s = new Simple; //生成堆对象
s->out();
delete s; //释放对象
return 0;
}
另外需要注意的是,
请为多态基类定义一个虚析构函数,并不要在析构函数中调用virtual虚函数
程序中不要以Simple为例去自己管理指针成员,请使用auto_ptr或是tr1::share_ptr进行堆对象管理,这里的Simple只是一个晰构函数使用示例。
 
楼主要详细了解,看以看下相关资料:
《c++ primer》
5.11 new和delete表达式
18.1 优化内存分配
《thinking in c++》
chapter 13 动态对象创建
《effective c++》
条款16,条款49,50,51,52
《exception c++ style中文版》
条款22,23
等等。
这样会对c++ new delete有个比较深入的了解

转载于:https://www.cnblogs.com/wycnb/p/4664934.html

你可能感兴趣的文章
邮箱服务器DNS BLACKLIST过滤SMTP
查看>>
ActiveMQ学习笔记(3)——ActiveMQ的安装
查看>>
OSI(Open System Interconnection)网络7层模型
查看>>
Blat-windows cmd命令行脚本SMTP模式发邮件的开源工具参数详细说明
查看>>
25匹马取前5,每次只能比5匹
查看>>
使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
查看>>
linux rhel6 搭建RSYNC 差异备份详解
查看>>
mysql语句大全
查看>>
ssh执行sudo命令所遇到的错误解决
查看>>
攻克要塞 - 冲刺题目下载
查看>>
SSH登录-bash:/etc/profile Permission Denied 报错,root登录正常
查看>>
Retrofit2 再次封装(API not restful)
查看>>
OMF方式管理(2)
查看>>
AIX学习之--文件系统修复(/home)
查看>>
10个趣味Linux动画命令
查看>>
android环境搭建
查看>>
Controller增强,全局异常处理类
查看>>
Docker镜像与仓库
查看>>
Linux基础--进程管理相关命令介绍(2)
查看>>
VB.NET 自动打包程序
查看>>