C++结构数组的分配

mar*_*ary 1 c++ arrays struct allocation

我必须在C++中分配一个struct数组,任何struct都包含两个int向量.这是我的结构:

typedef struct _Sample{
vector<int> contourX;
vector<int> contourY;
}Sample;
Run Code Online (Sandbox Code Playgroud)

要分配这个数组,我写下面的代码:

data = (struct _Sample*) malloc(sizeof(struct _Sample) * nsamples);
Run Code Online (Sandbox Code Playgroud)

当我尝试将一个Sample元素分配给data [0]时,运行时出错.问题出在哪儿?

Mes*_*sop 6

您正在尝试创建一个数组,为此,您应该使用它new[]来分配内存(并delete []释放它)。

这样你的代码应该是:

Sample* data = new Sample[nsamples];
Run Code Online (Sandbox Code Playgroud)

然后你可以像任何数组一样迭代数组的每个元素:

for(int i = 0; i < nsamples; i++)
{
    data[i].contourY // do something
    data[i].contourX // do something
}
Run Code Online (Sandbox Code Playgroud)


Oli*_*rth 5

经验法则:永远不要malloc在C++中使用.1 它是一个C函数,因此,不会像调用构造函数那样执行所有C++操作.

如果必须动态分配内存,请new改用.


1.这是一个例外,但有一些例外,但对于大多数情况来说,作为一揽子规则是安全的.

  • @VladLazarenko:"经验法则"!="一揽子规则". (2认同)