C ++ |无效*数据[1000]

时间:2011-07-22 14:22:21

标签: c++ arrays pointers

C ++ 中以这种方式将指针保存在静态分配的数组中是否合适?

void *data[1000];

32位和64位计算机上void*的大小是否各不相同?

3 个答案:

答案 0 :(得分:5)

几乎可以肯定绝对不合适。无效指针开始时非常糟糕,并将它们与可变的静态数据混合在一起,你有一些非常糟糕的东西。一个原始的未包装的数组,其中包含一个神奇的数字大小,我很高兴我的代码中没有这个数组。当然,如果你必须,那么你必须这样做,但是在绝大多数新代码中,你不需要这样的东西。

是的,void *的大小各不相同。

答案 1 :(得分:2)

void*更好的选择是使每个对象都来自基类并改为使用base*

比固定大小的数组更好的选择是使用std::vector<base*>或Boost指针容器。

是的,指针的大小在32位和64位系统之间会有所不同 - 这就是重点。

答案 2 :(得分:1)

是的,void*的大小会因系统位数而异。

不可能说使用固定大小的数组并在其中存储void*指针是合适的而没有更多细节 - 它通常不是一个好的选择,但有时你真的没有其他选择。