0

次の構造が定義されています。

point_str={loop_point, x:0d, y:0d}
loop_time_str={loop_time_struct, points:ptr_new(/allocate_heap), loop_id:0d, time:0d}
loop_str={loop_struct,time_series:replicate(loop_time_str, num_images), loop_id:0d}

ポイントは配列であり、ポイントのサイズはさまざまであるため、ポインターである必要があることを理解しています。

後で新しい変数を作成します。

curr_loop_intime = {loop_time_struct}

次に、値を入力します。

FOR POINT=0,n_elements(IND)-1 DO BEGIN
  points_arr[POINT].x = X(IND[POINT])
  points_arr[POINT].y = Y(IND[POINT])
ENDFOR

次に、次のようにして、ポイント配列をループに割り当てようとします。

*(curr_loop_intime.points)=ptr_new(points_arr)

しかし、この行は私にエラーを与えます:

% Unable to dereference NULL pointer: <POINTER  (<NullPointer>)>.

誰か提案はありますか?

4

1 に答える 1

0

[ *() で囲むことにより]points_arr逆参照されたポインターにポインターを割り当てようとしているようです。curr_loop_intime.pointsは以前に何かを指すように割り当てられていないためcurr_loop_intime.points、IDL はそれを逆参照できず、エラーがスローされます。

代入ステートメントから *() を削除して、ポインター型の変数として宣言されている構造体メンバーにpoints_arrポインターを代入するようにしてください。.points

お役に立てれば。

于 2013-06-12T09:35:18.367 に答える