new/ delete和malloc/有free什么区别?
相关(重复?):在什么情况下我使用malloc vs new?
为什么非放置new表达式和delete表达式实现为内置语言而不是常规函数?
如果我们有...
一种向OS请求/回馈内存的方法
一种显式调用构造函数的方法(放置new)
一种显式调用析构函数的方法(~T())
...为什么不能放置new,delete只是标准库中的常规功能?例:
template <typename T, typename... Ts>
T* library_new(Ts&&... xs)
{
auto* ptr = /* request enough memory for `T` from OS */;
new (ptr) T(std::forward<Ts>(xs)...);
return ptr;
}
template <typename T>
void library_delete(T* ptr)
{
ptr->~T();
/* reclaim memory for `T` from OS */
}
Run Code Online (Sandbox Code Playgroud)