make_shared将动态地进行单个内存分配,从而提高性能。但是如何为托管对象和控制块使用new进行单个内存分配。我想知道内存实际上是如何在内部进行的。
答案 0 :(得分:2)
make_shared将动态地进行单个内存分配
请注意,标准不要求这样做。这是可能的,良好的实现也是如此。
怎么可能呢?
例如,它可以通过分配一个未初始化的内存块来实现,该内存块足够大以包含控制块和指向它们的对齐要求的指向对象,然后使用{{3}构造两个对象中的每一个}。 placement new可用于分配内存。这有点类似于std::vector::reserve
如何分配一个内存块,以后可以构建多个对象。