c++学习笔记 动态内存分配 对象、对象数组的动态创建和释放

声明:注明代码 出处http://www.weixueyuan.net/view/6347.html


当我们需要为类对象动态分配存储空间时,我们应该使用C++语言提供的new与new[]操作符,而不要使用C语言提供的malloc函数。


C++语言提供的new和new[]操作符则不会如此,使用它们为对象分配存储空间的同时,它们也会调用相应的构造函数。


操作符delete和delete[]在释放对象存储空间的同时也会调用析构函数,而free函数则不会调用析构函数


  1. #include<iostream>
  2. using namespace std;
  3. class test
  4. {
  5. public:
  6. test(int i = 1){num = i;cout<<num<<" Constructor"<<endl;}
  7. ~test(){cout<<num<<" Destructor"<<endl;}
  8. private:
  9. int num;
  10. };
  11. int main()
  12. {
  13. test * t0 = new test(0);
  14. test * t1 = new test[5];
  15. test * t2 = (test *)malloc(sizeof(test));
  16. delete t0;
  17. delete[] t1;
  18. free(t2);
  19. return 0;
  20. }
程序运行结果:
0 Constructor
1 Constructor
1 Constructor
1 Constructor
1 Constructor
1 Constructor
0 Destructor
1 Destructor
1 Destructor
1 Destructor
1 Destructor
1 Destructor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值