C ++结构数组的分配

时间:2012-06-03 17:45:09

标签: c++ arrays struct allocation

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

typedef struct _Sample{
vector<int> contourX;
vector<int> contourY;
}Sample;

要分配此数组,请编写以下代码:

data = (struct _Sample*) malloc(sizeof(struct _Sample) * nsamples);

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

4 个答案:

答案 0 :(得分:5)

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

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

<小时/> 1。这是一个例外,但有一些例外情况,但对于大多数情况来说,将其作为一揽子规则是安全的。

答案 1 :(得分:3)

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

那样你的代码应该是:

Sample* data = new Sample[nsamples];

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

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

答案 2 :(得分:3)

您需要使用new - 您的向量的构造函数需要执行。

答案 3 :(得分:0)

如果您使用c ++编程,可以使用“new”...喜欢:     _Sample * data = new _Sample [size];