常用的内存管理关键字malloc、free,new operator,operator new,placement new

malloc的用法: 使用malloc是向系统申请一定字节的内存,申请成功返回申请到内存的首地址,否则返回NULL.

malloc和free使用是的注意事项: malloc和free是成对使用的,所以在使用malloc和free 时,不要对分配内存的指针复制操作了,因为复制后,free找不到原来的指针,会导致释放内存出现错误,free分配内存的指针的时候,必须使原本malloc过的指针。

new操作符(new operator)
比如
string *str=new string("Mermory Management.")这里的new 便是new 操作符
它的作用有两个:一、分配足够的内存来存放所需类型的对象;二、调用构造函数来初始化内存中的对象
(作用总结:分配内存+调研用构造函数来初始化+返回相应的指针

operator new
new操作符调用一个函数来完成必需的内存分配时,可以重写或重载这个函数来改变它的行为。new操作符为分配内存所调用函数的名字是operator new。
实验代码:

class Test
{
 public:
          Test()
          {
           cout<<"构造函数."<<endl;
          }
          ~Test()
          {
          cout<<"析构函数.”<<endl;
          }
          void *operator new(size_t size)
          {
          Test *t=(Test*)malloc(sizeof(Test));
          cout<<"分配内存."<<endl;
          return t;
          }
          void operator delete(void *p)
          {
          free(p);
          cout<<"释放内存."<<endl;
          return;
          }
};
运行结果:分配内存
         构造函数
         析构函数
         释放内存

placement new(定位放置new)
一般来说,使用new申请空间时,是从系统的“堆”(heap)中分配空间。申请所得的空间的位置是根据当时的内存的实际使用情况决定的。但是,在某些特殊情况下,可能需要在已分配的特定内存创建对象,这就是所谓的“定位放置new”(placement new)操作。
定位放置new操作的语法形式不同于普通的new操作。例如,一般都用如下语句A* p=new A;申请空间,而定位放置new操作则使用如下语句A* p=new (ptr)A;申请空间,其中ptr就是程序员指定的内存首地址。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值