make_shared 将动态分配单个内存,从而提高性能。但是它如何为托管对象和控制块使用 new 进行单个内存分配。我想知道内存分配实际上是如何在内部发生的。
问问题
721 次
1 回答
2
make_shared 将动态进行单个内存分配
请注意,这不是标准要求的。这是可能的,并且好的实现可以做到这一点。
怎么可能做到?
例如,可以通过分配一个未初始化的内存块来实现,该内存块足够大以包含控制块和指向的对象,同时考虑到它们的对齐要求,然后使用placement new构造这两个对象中的每一个。std::malloc
可用于分配内存。这有点类似于如何std::vector::reserve
分配一块内存,以后可以在其中构造多个对象。
于 2016-10-12T19:11:58.583 回答