【发布时间】:2017-11-12 23:56:27
【问题描述】:
在我的新工作场所,代码大量使用了 Pimpl idiom,原因是为了减少编译时间。但我有一个基本查询 - pimpl 不需要动态分配内存吗?因此,实际上我们在堆中分配了比需要更多的内存。如果它被大量使用,你最终会使用更多的内存。 那么使用它是个好主意吗?
【问题讨论】:
-
唯一额外的内存开销是实际的指针变量本身,它将是四个或八个字节(取决于您的目标是 32 位还是 64 位系统)。无论如何,结构的数据必须存储在某个地方。也许几个字节用于填充。一般来说,您无需担心,除非您开始遇到内存不足的情况(您可能应该先寻找其他地方)
-
@Someprogrammerdude - 使用标准全局分配器会产生记账的开销。成本/回报分析实际上取决于粉刺本身的大小。可能需要自定义小对象分配器。
-
@StoryTeller 没错,但在大多数情况下,我仍然认为这就像用大象枪射击苍蝇。
-
@Someprogrammerdude - 如果不进行分析,它确实是用火箭筒进行的过早优化。不过,如果考虑所有变量,这是一个有趣的问题,也是优化的场所。
-
如果您不分配数百万个这些对象,我不会担心
标签: c++ memory heap-memory dynamic-memory-allocation pimpl-idiom