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アイテムを割り当てます。2D配列を作成するよりも、2次元をシミュレートする方が得策です。

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

(Sample *)malloc(...内容のない一次元配列を効果的に構築します。2番目の次元を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 に答える