一、指针
IDL中指针创建时,其数据存储在IDL堆变量中,IDL的指针与C、C++和FORTRAN等
其他程序语言的指针不同,它所处的堆变量是可以动态分配内存的全局变量,不指向真正的内存地址。
二、主要函数包括:PTR_NEW、PTR_FREE、PTR_VALID、PTRARR
(1)Result = PTR_NEW( [InitExpr] [, /ALLOCATE_HEAP] [, /NO_COPY] )
指针赋值与变量赋值不一样,指针赋值是使两个指针指向同一个堆变量,修改任意一个会影响另一个
(2) ptrArr函数
指针数组用PtrArr()函数创建。
(3)空指针与非空指针
Ptr_New()函数可以创建空指针,空指针不指向任何堆变量。如果创建指针以备后续指向某些数据,可以利用
PTR_NEW()函数的ALLOCATE_HEAP关键字来实现。
(4)内存控制
分配内存
Ptr_new()函数创建指针时,变量会被复制到堆变量中,原变量仍然保留在内存中。调用
PTR_NEW时,若设置NO_COPY关键字,则原变量不会保留在内存中。
释放内存
销毁指针可以释放占用的内存。IDL中用Ptr_free销毁指针,或者通过HEAP_GC或重置
当前IDL进程来销毁指针。
(5)指针有效判断
指针创建后可以用Ptr_Valid()函数来判断是否有效