类的动态分配内存与释放
来源:互联网 发布:python proxyfix 编辑:程序博客网 时间:2024/05/19 04:51
在对类进行实例化时也许会批量申请
例如,申请10个Account实例,
Account *buf=new Account[10];//申请内存,并调用默认构造函数for(int i=0;i<10;i++)new(buf+i) Account("ab",i);调用用具有两个参数的构造函数,在原来的内存上上面的两次调用构造函数,只能有一个进行_name的内存的动态分配,否则两次的 动态分配只调用一次析构函数,造成内存泄漏在释放内存时可以直接
delete[] buf//注意调用析构函数的顺序是反的因为buf就是Account数组,就会以此进行调用析构函数
也可以分别进行调用析构函数
for(int i=0;i<10;i++)buf[i].~Account();不过我认为还是调用delete[] buf更能够和上面的new对应,两者只能使用一个,
但是有一个疑问就是buf只是申请实例本身的内存,而构造函数是在申请char*_name的内存,析构函数是删除_name的内存,当再次进行delete时是删除实例本身的内存,但是实际上却不是这样。
char *buf=new char [sizeof(Account)*10];//预分配一定的内存int offset=sizeof(Account);//根据偏移量进行初始化for(int i=0;i<10;i++){new(buf+i*offset) Account("ab",i);}//Account *p=reinterpret_cast<Account*>(buf);Account *ps=(Account*)buf; for(int i=0;i<elems;i++) ps[i].~Account();//依次调用析构函数// delete[] reinterpret_cast<char*>(ps); delete [] buf;删除内存这个例子和上面的疑问相对应,只有在预分配的情况下才可以说的通
阅读全文
0 0
- 类的动态分配内存与释放
- 内存动态分配与释放
- 内存动态分配与释放
- 内存动态分配与释放
- 内存动态分配与释放
- 内存动态分配与释放
- Delphi中内存的动态分配与释放
- C与C++中动态分配与释放内存的区别
- C++动态分配三级指针的内存与释放
- C与C++动态分配,释放内存的区别
- C与C++动态分配,释放内存的区别
- C与C++动态分配,释放内存的区别
- C与C++动态分配,释放内存的区别
- C++【堆内存的动态分配与释放(new/delete)】
- C/C++动态分配与释放内存的区别详细解析
- C与C++动态分配,释放内存的区别
- C/C++动态分配与释放内存的区别详细解析
- C++走向远洋——43(人数不定的工资类,动态分配内存与释放)
- 牛客网_华为机试_023_删除字符串中出现次数最少的字符
- poj 3669 bfs
- [编程题] 微信红包
- 从join on和where执行顺序认识T-SQL查询处理执行顺序
- hadoop 日志及历史服务器
- 类的动态分配内存与释放
- H264码流中SPS PPS详解
- 没事刷刷题之三 产生冠军 HDOJ 2094
- python学习笔记(五)
- 全文检索Lucene(四)---Compass框架
- 海康威视多摄像头视频实时采集——OpenCV显示
- python 函数高级特性
- Volatile 在程序设计中的作用
- 新浪微博粉丝——爬虫涨粉技巧