2

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

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

为了分配这个数组,我编写了以下代码:

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

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

4

4 回答 4

6

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

这样你的代码应该是:

Sample* data = new Sample[nsamples];

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

for(int i = 0; i < nsamples; i++)
{
    data[i].contourY // do something
    data[i].contourX // do something
}
于 2012-06-03T17:48:17.907 回答
5

经验法则:永远不要malloc在 C++ 中使用。1 它是一个 C 函数,因此,它并没有像调用构造函数那样做所有 C++ 的事情。

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


1. 这是一条规则,有少数例外,但在大多数情况下,可以安全地视为一揽子规则。

于 2012-06-03T17:47:14.933 回答
3

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

于 2012-06-03T17:48:44.747 回答
0

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

于 2012-06-03T17:47:42.010 回答