sha*_*oth 5 c++ memory-management visual-c++
我在Visual C++ 9程序中有以下问题.有一个巨大的对象,逻辑上包含几个子对象.我可以将子对象存储在对象中,也可以存储指向单独分配的子对象的指针.
这里的关键点是,在一个外部对象中始终存在每个类型的子对象的一个实例 - 它总是具有相同的大小,并且其生命周期与外部对象的生命周期完全相同,因此上面的两个选择在逻辑上是相同的 - 程序结构和逻辑不会改变.
以下是我的思想发展方式:
与此同时,内存碎片让我感到困扰 - 我需要我的程序非常稳定,能够连续几个月运行.
我该如何做出决定?考虑到上述因素,是否有任何方法可以决定是否应该选择较小的物体或较大的物体?
与分配大量较小对象相比,分配一些大对象所产生的内存碎片更少。更重要的是,由于大部分对象的大小完全相同,因此您通常可以完全按原样重用已释放的块。将对象拆分为大量较小的对象通常会使碎片问题变得更加严重,而不是更少。
如果您发现碎片确实成为一个问题,您通常希望通过定义自己的分配器来解决这个问题。