可分配数组(实型)的内存分配问题

Problem with memory allocation for allocatable array( real type )

我是 Fortran 编程的新手,所以我需要有关可分配数组的帮助。

这是我的简单代码:

PROGRAM MY_SIMPLE_CODE

IMPLICIT NONE

INTEGER :: N_TMP, ALLOC_ERR, DEALLOC_ERR

REAL, ALLOCATABLE, DIMENSION(:) :: P_POT

WRITE( *,* ) "ENTER THE VALUE FOR N_TMP:"
 READ( *,* ) N_TMP

IF ( .NOT. ALLOCATED( P_POT) ) ALLOCATE( P_POT( N_TMP), STATUS = ALLOC_ERR )

IF ( ALLOC_ERR .NE. 0 ) STOP( "ERROR - ALLOCATION P_POT !!!")




IF ( ALLOCATED( P_POT) ) DEALLOCATE( P_POT, STATUS = DEALLOC_ERR )

IF ( DEALLOC_ERR .NE. 0 ) STOP( "ERROR - DEALLOCATION P_POT !!!")

END PROGRAM MY_SIMPLE_CODE

当我共同构建此代码时,我收到此错误消息:

Allocate-object is neither a data pointer nor an allocatable variable

这段代码有什么问题?

这个简单的代码可以屏蔽什么样的棘手的东西?

IDE: Code::Blocks TDM_GCC_5 1 0

OS: Win 10 X64

正如@Steve在评论中所说,allocation/deallocation状态的关键字是STAT,而不是STATUS。报错是因为编译器不认识名字,认为是变量。

此外,存在语法错误,因为 STOP 语句和左大括号之间必须至少有一个 space(或者根本没有大括号)。

IF ( .NOT. ALLOCATED( P_POT) ) ALLOCATE( P_POT( N_TMP), STAT = ALLOC_ERR )
IF ( ALLOC_ERR .NE. 0 ) STOP "ERROR - ALLOCATION P_POT !!!"
!(...)
IF ( ALLOCATED( P_POT) ) DEALLOCATE( P_POT, STAT = DEALLOC_ERR )
IF ( DEALLOC_ERR .NE. 0 ) STOP "ERROR - DEALLOCATION P_POT !!!"