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 指向该内存),并将其初始化为零。