模拟实现new、delete和new[] 、delete[]
2016-03-22 08:35
239 查看
模拟实现new。delete
模拟实现new[]。delete[]
void Test1() { //1、分配空间 2.显示调用构造函数 AA* p1 = (AA*)malloc(sizeof(AA)); new(p1)AA; //NEW(P1+I)AA(参数列表); //3、析构函数 4、释放空间 p1->~AA(); free(p1); }
模拟实现new[]。delete[]
void Test2() { //1、分配空间 2.显示调用构造函数 AA* p1 = (AA*)malloc(sizeof(AA) * 10 + 4); *((int*)p1) = 10; p1 = (AA*)((int*)p1 + 1); //3、析构函数 4、释放空间 for (int i = 0; i < 10; ++i) { new(p1 + i)AA; } int n = *((int*)p1 - 1); for (int i = 0; i < n; ++i) { p1[i].~AA(); //(p1 + 1)->~AA(); //也可以 } free((int*)p1 - 1); }
相关文章推荐
- .使用malloc开辟一个3*4的二维数组,并将内容初始化为0-11
- 【C语言】通讯录:动态开辟内存版和文件版本
- c++动态内存开辟
- 全局变量 局部变量 静态变量的区别
- scoiday1T3&&bzoj4445小凸想跑步
- s3c2440第一个流水灯驱动程序(JZ2440)
- (语法)内存地址和指针<一>
- Integer Inquiry(大数)
- 学习JS的第二天
- 桶排序
- update语句的执行步骤及commit语句的执行顺序
- Rebirth 认认真真的成为Android大拿!
- POJ_P2728 Desert King(最优比率生成树)
- [Android]Fragment源代码分析(二) 状态
- 表单2
- flask upload file
- 快速排序
- AC自动机+DP(POJ2778&&POJ3691)
- 谁说理工男不浪漫?电子工程师的恋爱神器
- 表单