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
- delete/newoperator operatornew/delete operatornew[]/delete[] placementnew/delete
- DELETE
- delete
- delete
- DELETE
- delete
- delete
- delete
- Delete
- delete []
- delete
- Delete
- delete
- delete
- delete
- delete
- DELETE
- delete
- C++程序栈与尾递归优化
- lighttpd及pcre的交叉编译
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- cmd - 常用命令
- http错误码大全
- delete/newoperator operatornew/delete operatornew[]/delete[] placementnew/delete
- 位图索引bitmap(三):位图索引技术集合FastBit
- cpp的STL值vector和deque
- 配置文件jdk和hadoop和scala和spark
- Material Design设计之Palette调色板
- 我见过最牛的18种运营习惯,改变一生!
- mysql数据库相关知识总结
- Android图片适配小知识点
- caffe-windows 错误总结