在 C ++ 中以这种方式将指针保存在静态分配的数组中是否合适?
void *data[1000];
32位和64位计算机上void*
的大小是否各不相同?
答案 0 :(得分:5)
几乎可以肯定绝对不合适。无效指针开始时非常糟糕,并将它们与可变的静态数据混合在一起,你有一些非常糟糕的东西。一个原始的未包装的数组,其中包含一个神奇的数字大小,我很高兴我的代码中没有这个数组。当然,如果你必须,那么你必须这样做,但是在绝大多数新代码中,你不需要这样的东西。
是的,void *的大小各不相同。
答案 1 :(得分:2)
比void*
更好的选择是使每个对象都来自基类并改为使用base*
。
比固定大小的数组更好的选择是使用std::vector<base*>
或Boost指针容器。
是的,指针的大小在32位和64位系统之间会有所不同 - 这就是重点。
答案 2 :(得分:1)
是的,void*
的大小会因系统位数而异。
不可能说使用固定大小的数组并在其中存储void*
指针是合适的而没有更多细节 - 它通常不是一个好的选择,但有时你真的没有其他选择。