首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >会分配类数组成员的内存吗?

会分配类数组成员的内存吗?
EN

Stack Overflow用户
提问于 2012-11-15 11:28:38
回答 5查看 465关注 0票数 0

我想知道是否在c++中为类的数组成员分配内存。

在我的类中,我定义了如下数组成员:

代码语言:javascript
运行
复制
class A
{
  public:
    B* B_array[1000];
}

在构造函数中,我想使用它:

代码语言:javascript
运行
复制
A::A()
{
  for(int i = 0; i < 1000; i++)
  {
     B_array[i] = new B;//can i use B_array[0...999]???
  }
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-15 11:30:33

代码语言:javascript
运行
复制
B* B_array[1000];

您所拥有的是指向类型1000的一个B指针数组。

代码语言:javascript
运行
复制
  for(int i = 0; i < 1000; i++)
  {
       B_array[i] = new B;//can i use B_array[0...999]???
  }

将内存分配给数组中的每个指针,在此语句之后,每个指针指向堆上的内存。

因此,是的,一旦执行了这些代码,您就可以使用它们中的每一个。

票数 2
EN

Stack Overflow用户

发布于 2012-11-15 11:33:51

可以,停那儿吧。当您输入构造函数的主体时,有1000个未初始化的指针等待您初始化它们。

不过,您应该做的是使用std::vector<B>

代码语言:javascript
运行
复制
class A
{
  public:
     std::vector<B> array;
}

A::A() : array(1000) {}

做完这件事。向量动态分配其元素。

票数 2
EN

Stack Overflow用户

发布于 2012-11-15 11:31:41

是的你可以。将始终为1000个指针分配内存。然而,这些指针不会被初始化,除非你自己去做(就像你在你的构造代码中一样)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13396597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档