我正在运行一个FORTRAN程序,它动态地为相当大的数组分配内存,有时它们不适合内存。
这样的分配
allocate(my_array(really big_number))会给出错误
Operating system error: Cannot allocate memory
Allocation would exceed memory limit程序就会退出。我想知道是否有任何方法来捕获这个或测试内存是否可用,这样如果不允许我分配这么大的数组,我就可以采取适当的措施?
发布于 2014-10-26 09:28:20
用途:allocate(my_array(really big_number),stat=ierror)
使用stat=说明符,分配的状态将存储在指定的变量中(示例中的ierror)。零表示分配成功,非零表示分配失败。
来自ALLOCATE语句上的Fortran 90标准(ALLOCATE):
如果存在
STAT=说明符,则分配语句的成功执行将导致stat变量定义为零。 如果在执行ALLOCATE语句时出现错误情况,那么stat变量就会被定义为一个与处理器相关的正整数值。如果在不包含ALLOCATE说明符的STAT=语句的执行过程中出现错误情况,则可执行程序的执行将终止。
https://stackoverflow.com/questions/26571470
复制相似问题