zoukankan      html  css  js  c++  java
  • new和delete关键字

    new关键字创建出来的对象位于什么地方?
    很明显嘛,new关键字创建出来的对象一定位于堆空间,这种说法一定正确吗?本篇博客帮你揭开其神秘的面纱。

    被忽略的事实
    new/delete的本质是C++预定义的操作符
    C++对这两个操作符做了严格的行为定义
    -new:
    1.获取足够大的内存空间(默认为堆空间)
    2.在获取的空间中调用构造函数创建对象
    -delete:
    1.调用析构函数销毁对象
    2.归还对象所占用的空间(默认为堆空间)

    在C++中能够重载new/delete操作符
    全局重载(不推荐)
    局部重载(针对具体类进行重载)
    重载new/delete的意义在于改变动态对象创建时的内存分配方式

    new/delete的重载方式
    //static member function,写不写static都是静态成员函数。
    void* operator new(unsigned int size)
    {
        void* ret = NULL;
        /*ret pointer to allocated memory*/'
        return ret;
    }
    
    
    //static member function
    void operator delete(void* p)
    {
        /*free the memory which is pointed by p*/
    }
  • 相关阅读:
    centos7 mongodb3.4 安装
    centos7 开放端口号
    Junit4测试Spring
    selenium浏览器内核监测处理
    mitmproxy(TLS错误)
    爬虫计算两张验证图片的距离(情况一)
    git的git bash使用
    算法
    RBAC权限管理设计
    beego框架返回json数据
  • 原文地址:https://www.cnblogs.com/-glb/p/12294683.html
Copyright © 2011-2022 走看看