我想知道是否在c++中为类的数组成员分配内存。
在我的类中,我定义了如下数组成员:
class A
{
public:
B* B_array[1000];
}在构造函数中,我想使用它:
A::A()
{
for(int i = 0; i < 1000; i++)
{
B_array[i] = new B;//can i use B_array[0...999]???
}
}发布于 2012-11-15 11:30:33
B* B_array[1000];您所拥有的是指向类型1000的一个B指针数组。
for(int i = 0; i < 1000; i++)
{
B_array[i] = new B;//can i use B_array[0...999]???
}将内存分配给数组中的每个指针,在此语句之后,每个指针指向堆上的内存。
因此,是的,一旦执行了这些代码,您就可以使用它们中的每一个。
发布于 2012-11-15 11:33:51
可以,停那儿吧。当您输入构造函数的主体时,有1000个未初始化的指针等待您初始化它们。
不过,您应该做的是使用std::vector<B>
class A
{
public:
std::vector<B> array;
}
A::A() : array(1000) {}做完这件事。向量动态分配其元素。
发布于 2012-11-15 11:31:41
是的你可以。将始终为1000个指针分配内存。然而,这些指针不会被初始化,除非你自己去做(就像你在你的构造代码中一样)。
https://stackoverflow.com/questions/13396597
复制相似问题