我在这里有一个问题,有人可能能够帮助。 如果可以,非常感谢!用三维多态类数组管理内存
我试图存储一个包含很多小对象的三维数组。 所有这些对象类都将从一个父类继承。
理想情况下,我正在查看一个32x32x32的对象数组,每个对象不可能超过8个字节。 因此,每32768个对象最多8个字节= 256kb
但是其中一些不需要8字节的数据,并且在某些情况下只需要一个字节的数据。
问题是,这些对象中的每一个都会根据它们的内容有一组不同的行为。所以如果我调用(obj.print()),每个人的行为都会有所不同。
通过创建继承通用接口类的子类,它本身很容易解决。但是,因为它们以3d数组大量存储,所以将它们存储为指针会自动添加另外4个字节的开销 - 数据类型为8个字节,指向它的指针为4个字节。 平均而言,即使某些对象少于8个字节,内存开销仍将增加至少30%的使用量。
这本身并不是一个巨大的问题,直到我开始存储这些数据块中的许多数据块 - 然后内存变成了一个相当严重的问题。
从长期可维护性和代码管理的角度来看,这确实是最好的方式。但我来这里的聪明人,看看你是否有任何可以分享的智慧珍珠! :)
感谢, 布赖恩
您可以高效地实现自己的区分联盟。 –
内容是多态的,引用来自同一个容器*中相同公共基*的不同派生实例将会在某种程度上限制你的选择。 – WhozCraig
占用一个单字节的多态对象是标准所不允许的理论上的可能性,但您必须查看*一点*来获得实际上可以实现的实现。 –