Chinaunix首页 | 论坛 | 博客
  • 博客访问: 260361
  • 博文数量: 84
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 927
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-06 23:00
个人简介

growing

文章分类

全部博文(84)

文章存档

2017年(6)

2016年(61)

2015年(17)

我的朋友

分类: C/C++

2015-12-05 20:17:39

点击(此处)折叠或打开

  1. int main()
  2. {
  3.     //Test1* p1 = (Test1*)malloc(sizeof(Test1));
  4.     //new(p1) Test1(10);

  5.     // new -> 分配+调用构造函数初始化

  6.     // malloc/operator new -> 分配内存
  7.     // new 定位表达式 ->显示调用构造函数初始化

  8.     //Test1* array1 = new Test1[10];

  9.     //delete[] array1;

  10.     // 模拟new[]
  11.     Test1* array2 = (Test1*)operator new(sizeof(Test1)*10 + 4);
  12.     *((int*)array2) = 10;
  13.     array2 = (Test1*)((int)array2 + 4);
  14.     for (int i = 0; i < 10; ++i)
  15.     {
  16.         new(array2 + i) Test1(20);
  17.     }

  18.     // 模拟delete[]
  19.     // 先调析构函数,再释放空间
  20.     int count = *((int*)array2 - 1);
  21.     for (int i = 0; i < count; ++i)
  22.     {
  23.         array2[i].~Test1();
  24.     }
  25.     array2 = (Test1*)((int)array2 - 4);
  26.     operator delete(array2);

  27.     return 0;
  28. }

阅读(1432) | 评论(0) | 转发(0) |
0

上一篇:C++实现Date

下一篇:String类

给主人留下些什么吧!~~