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}

Points 是一个数组,因为点的大小不同,我知道它需要是一个指针。

稍后我创建一个新变量:

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 回答