在 C 代码中看到以下内容很常见:
malloc(sizeof(int)*100);
这将返回一个指向足以容纳 100 个整数的内存块的指针。fortran中是否有任何等价物?
用例:
我有一个二进制文件,打开为:
open(unit=10,file='foo.dat',access='stream',form='unformatted',status='old')
我知道该文件包含“记录”,其中包含一个包含 20 个整数、20 个实数和 80 个字符的标题,然后是另一个N
实数。每个文件可以有数百条记录。基本上,我想读取或写入此文件中的特定记录(N
为简单起见,假设是一个固定常量)。
如果我知道每种数据类型的大小,我可以很容易地计算出我想要写入的文件中的位置:
header_size = SIZEOF_INT*20 + SIZEOF_FLOAT*20 + SIZEOF_CHAR*80
data_size = N*SIZEOF_FLOAT
position = (record_num-1)*(header_size+data_size)+1
目前我有
!Hardcoded :-(
SIZEOF_INT = 4
SIZEOF_FLOAT = 4
SIZEOF_DOUBLE = 8
SIZEOF_CHAR = 1
有没有办法做得更好?
约束:
- 该代码旨在使用各种编译器在各种平台上运行。符合标准的解决方案绝对是首选。