0

我试图弄清楚为什么当我将值分配给堆分配内存中的结构数组中的结构时会出现错误。

我有以下 C 结构:

typedef struct _Point{
int x;
int y;
 }Point;

和一个点数组:

typedef Point Sample[];

现在我想分配一个样本数组,其中任何样本由 15 个点组成,我使用以下代码:

Sample *new_positions;
data.old_positions =(Sample*) malloc(sizeof(Point) * 15 * global.nsamples);

当我尝试将其与以下代码一起使用以分配值时,出现错误

data.old_positions[0][0].x=5;

问题出在哪里?:(

4

1 回答 1

1

data.old_positions 只是一维 -

 data.old_positions[0].x=5;

分配 Zeroith 项目。最好模拟二维而不是构造二维数组。

 data.old_positions[0 * 15 + 0].x = 5;

(Sample *)malloc(...有效地构造一个没有内容的一维数组。您将需要 malloc 二维...

 data.old_positions = (Sample *)malloc(sizeof(Sample) * global.nsamples)
 for (int i = 0; i < global.nsamples; i++) 
     data.old_positions[i] = (Point*)malloc(sizeof(Point) * 15);

那应该这样做。

于 2012-06-07T15:53:02.067 回答