Sun Studio 12:Fortran 库参考

1.4.35.1 malloc malloc64:分配内存

malloc() 函数的调用方式如下所示:

k = malloc( n )

n

INTEGER

输入 

内存的字节数 

返回值 

INTEGER(Cray POINTER)

输出 

k>0:k 为分配的内存块起始位置的地址

k=0:错误

 

如果使用 -m64 针对 64 位环境进行了编译,则返回 INTEGER*8 指针值。参见下面的说明。


注 –

该函数在 Fortran 95 中属于内函数,而在 Fortran 77 中属于外部函数。对于编译为要在 64 位环境中运行的 Fortran 77 程序,应将 malloc() 函数和接收其输出的变量声明为 INTEGER*8。有一个函数 malloc64(3F),它用于实现在 32 位环境与 64 位环境之间移植程序。

k = malloc64( n )

n

INTEGER*8

输入 

内存的字节数 

返回值 

INTEGER*8

(Cray POINTER)

输出 

k>0:k 是分配的内存块起始位置的地址

k=0:错误


这些函数会分配一片内存区域,并返回该区域起始位置的地址。(在 64 位环境中,返回的字节地址可能超出 INTEGER*4 数值范围-必须将接收变量声明为 INTEGER*8 以免内存地址被截断。)内存区域并未以任何方式初始化,因此,不应假设它已预设为什么内容,尤其是零!

示例:使用 malloc() 的代码片段:


       parameter (NX=1000)
       integer ( p2X, X )
       real*4 X(1)
       …
       p2X = malloc( NX*4 )
       if ( p2X .eq. 0 ) stop ’malloc: cannot allocate’
       do 11 i=1,NX
 11         X(i) = 0.
       …
       end

在上面的示例中,获取了 4,000 字节的内存(p2X 指向该内存),并将其初始化为零。