delete/newoperator operatornew/delete operatornew[]/delete[] placementnew/delete

来源:互联网 发布:自定义票据打印软件 编辑:程序博客网 时间:2024/06/03 20:08
<span style="color:#CC0000;">A:placement new/delete placement new[]/delete[]:</span>inline _LIBCPP_INLINE_VISIBILITY void* operator new  (std::size_t, void* __p) _NOEXCEPT {return __p;}inline _LIBCPP_INLINE_VISIBILITY void* operator new[](std::size_t, void* __p) _NOEXCEPT {return __p;}inline _LIBCPP_INLINE_VISIBILITY void  operator delete  (void*, void*) _NOEXCEPT {}inline _LIBCPP_INLINE_VISIBILITY void  operator delete[](void*, void*) _NOEXCEPT {}<span style="color:#CC0000;">B:operator new/delete:</span>void* operator new(std::size_t size);                                   // replaceablevoid* operator new(std::size_t size, std::align_val_t alignment);       // replaceable, C++17void* operator new(std::size_t size, const std::nothrow_t&) noexcept;   // replaceablevoid* operator new(std::size_t size, std::align_val_t alignment,                   const std::nothrow_t&) noexcept;                     // replaceable, C++17void  operator delete(void* ptr) noexcept;                              // replaceablevoid  operator delete(void* ptr, std::size_t size) noexcept;            // replaceable, C++14void  operator delete(void* ptr, std::align_val_t alignment) noexcept;  // replaceable, C++17void  operator delete(void* ptr, std::size_t size,                      std::align_val_t alignment) noexcept;             // replaceable, C++17void  operator delete(void* ptr, const std::nothrow_t&) noexcept;       // replaceablevoid  operator delete(void* ptr, std:align_val_t alignment,                      const std::nothrow_t&) noexcept;                  // replaceable, C++17<span style="color:#CC0000;">C:operator new[]/delete[]:</span>void* operator new[](std::size_t size);                                 // replaceablevoid* operator new[](std::size_t size,                     std::align_val_t alignment) noexcept;              // replaceable, C++17void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; // replaceablevoid* operator new[](std::size_t size, std::align_val_t alignment,                     const std::nothrow_t&) noexcept;                   // replaceable, C++17void  operator delete[](void* ptr) noexcept;                            // replaceablevoid  operator delete[](void* ptr, std::size_t size) noexcept;          // replaceable, C++14void  operator delete[](void* ptr,                        std::align_val_t alignment) noexcept;           // replaceable, C++17void  operator delete[](void* ptr, std::size_t size,                        std::align_val_t alignment) noexcept;           // replaceable, C++17void  operator delete[](void* ptr, const std::nothrow_t&) noexcept;     // replaceablevoid  operator delete[](void* ptr, std::align_val_t alignment,                        const std::nothrow_t&) noexcept;                // replaceable, C++17<span style="color:#CC0000;">BC的实现:</span>void *operator new(std::size_t size) _THROW_BAD_ALLOC{    if (size == 0)        size = 1;    void* p;    while ((p = ::malloc(size)) == 0)    {        std::new_handler nh = std::get_new_handler();        if (nh)            nh();        else            throw std::bad_alloc();            break;    }    return p;}void *operator new(std::size_t size, std::align_val_t alignment) _THROW_BAD_ALLOC{    if (size == 0)        size = 1;    if (static_cast<size_t>(alignment) < sizeof(void*))      alignment = std::align_val_t(sizeof(void*));    void* p;    while (::posix_memalign(&p, static_cast<size_t>(alignment), size) != 0)    {        std::new_handler nh = std::get_new_handler();        if (nh)            nh();        else {            throw std::bad_alloc();            p = nullptr; // posix_memalign doesn't initialize 'p' on failure            break;        }    }    return p;}void*operator new(size_t size, const std::nothrow_t&) _NOEXCEPT{    void* p = 0;    try    {        p = ::operator new(size);    }    catch (...)    {    }    return p;}void*operator new(size_t size, std::align_val_t alignment, const std::nothrow_t&) _NOEXCEPT{    void* p = 0;    try    {        p = ::operator new(size, alignment);    }    catch (...)    {    }    return p;}void*operator new[](size_t size) _THROW_BAD_ALLOC{    return ::operator new(size);}void*operator new[](size_t size, std::align_val_t alignment) _THROW_BAD_ALLOC{    return ::operator new(size, alignment);}void*operator new[](size_t size, const std::nothrow_t&) _NOEXCEPT{    void* p = 0;    try    {        p = ::operator new[](size);    }    catch (...)    {    }    return p;}void*operator new[](size_t size, std::align_val_t alignment, const std::nothrow_t&) _NOEXCEPT{    void* p = 0;    try    {        p = ::operator new[](size, alignment);    }    catch (...)    {    }    return p;}voidoperator delete(void* ptr) _NOEXCEPT{    if (ptr)        ::free(ptr);}voidoperator delete(void* ptr, std::align_val_t) _NOEXCEPT{    if (ptr)        ::free(ptr);}voidoperator delete(void* ptr, const std::nothrow_t&) _NOEXCEPT{    ::operator delete(ptr);}voidoperator delete(void* ptr, std::align_val_t alignment, const std::nothrow_t&) _NOEXCEPT{    ::operator delete(ptr, alignment);} voidoperator delete(void* ptr, size_t) _NOEXCEPT{    ::operator delete(ptr);}voidoperator delete(void* ptr, size_t, std::align_val_t alignment) _NOEXCEPT{    ::operator delete(ptr, alignment);}voidoperator delete[] (void* ptr) _NOEXCEPT{    ::operator delete(ptr);}voidoperator delete[] (void* ptr, std::align_val_t alignment) _NOEXCEPT{    ::operator delete(ptr, alignment);}voidoperator delete[] (void* ptr, const std::nothrow_t&) _NOEXCEPT{    ::operator delete[](ptr);}voidoperator delete[] (void* ptr, std::align_val_t alignment, const std::nothrow_t&) _NOEXCEPT{    ::operator delete[](ptr, alignment);}voidoperator delete[] (void* ptr, size_t) _NOEXCEPT{    ::operator delete[](ptr);}voidoperator delete[] (void* ptr, size_t, std::align_val_t alignment) _NOEXCEPT{    ::operator delete[](ptr, alignment);}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗没打针被咬了怎么办 狗咬了没破皮没出血怎么办 被宠物狗咬了出血了怎么办 让狗咬了下红了怎么办 狗牙齿碰到红了怎么办 加拿大学生签背景调查了怎么办 gpa不到3该怎么办英国 内地学生赴港签证怎么办 学生去日本旅游签证怎么办 澳洲未婚妻签需要单身证明怎么办 高院收到申诉材料怎么办? 辞职出国留学后社保怎么办 高三数学40来分怎么办 论文查重表格内容重复怎么办 榕树叶子掉光了怎么办 2017江苏高考2c怎么办 高考刚过三本线怎么办 江苏高考选修有d怎么办 西安地铁卡丢了怎么办 酒后头痛怎么办快速缓解疼痛 孕妇感冒头痛怎么办快速缓解疼痛 投稿后发现文章有错误怎么办 如有一方不同意离婚怎么办 孩子上课时注意力不集中怎么办 幼儿上课时注意力不集中怎么办 孩子读初中不爱读书怎么办 老师需要刺激孩子家长怎么办 错觉视界第11关怎么办 爱逃学的学生老师怎么办 论文投稿发现有错误怎么办 孩子上初中数学物理不好怎么办 火山小视频误踢怎么办 铁棍山药弄到手很痒怎么办 山药皮过敏很痒怎么办 貔貅被家人摸了怎么办? 摸了山药很痒怎么办 山药搞得皮肤痒怎么办 手上弄了山药痒怎么办 老板就是个富二代怎么办 中考准考证密码忘了怎么办 准考证号和密码忘了怎么办