【发布时间】:2017-02-21 16:12:50
【问题描述】:
make_shared 将动态分配单个内存,从而提高性能。但是它如何为托管对象和控制块使用 new 进行单个内存分配。我想知道内存分配实际上是如何在内部发生的。
【问题讨论】:
-
没有这样的保证。这只是一个建议。
-
有什么问题?内部有人会调用
::operator new分配内存。 -
我同意,但是为 manager 对象做 new 并再次为控制器做 new 将在堆中的不同位置分配内存。它不会是一个单一的内存分配。
-
它可以只为
sizeof(controller)+sizeof(object)+ padding 分配原始内存,然后使用placementnew来初始化
标签: c++ c++11 shared-ptr make-shared