使用构造函数,构造函数连续构造:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <iostream> #include <complex> #include "class_a.h" using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ #define size 3 int main( int argc, char ** argv) { //complex* pa = new complex[3]; //内存泄漏就是只是释放了一块儿内存地址,当然删除一次和删除三次其实效果是一样的。 //使用array new 就要使用array delete A* buf = new A[size]; //调用默认构造函数 构造是由上向下的 A* tmp = buf; cout<< "buf=" <<buf<< " tmp=" <<tmp<<endl; //证明buf和temp的内存地址是完全一样的 for ( int i=0;i<size;i++) { new (tmp++)A(i); //ctor3次调用构造函数 (会直接将上面默认构造的元素替代) } cout<< "buf=" <<buf<< " tmp=" <<tmp<<endl; delete[] buf; //析构是由下向上的 return 0; } |
上述代码说明,array new和array delete,是一对必须一起使用,否则会造成内存泄露。上述代码是整型变量,不存在析构函数,也就不存在内存泄漏,所以即使不使用析构函数也影响不大。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· mysql8.0无备份通过idb文件恢复数据过程、idb文件修复和tablespace id不一致处
· 使用 Dify + LLM 构建精确任务处理应用