主题:子程序内分配动态数组
Amely
[专家分:10] 发布于 2011-08-17 23:24:00
我想在子程序中分配动态数组,就编了一个小程序,测试一下,代码见下
program test2
implicit none
integer,allocatable::shuzu(:)
print*,'test'
call all_cate(shuzu)
print*,shuzu
end program
subroutine all_cate(shuzu)
implicit none
integer::i,er
integer,allocatable::shuzu(:)
print*,'in'
allocate(shuzu(3),stat=er)
print*,er,'er'
do i=1,3,1
print*,i
shuzu(i)=i*2
end do
deallocate(shuzu)
return
end subroutine all_cate
但是allocate语句出错,错误提示不知道是啥意思?
test
in
getRegFromUnwindContext: Can't get Gr0 from UnwindContext, using 0
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
test2 4000000000002B30 Unknown Unknown Unknown
test2 40000000000029D0 Unknown Unknown Unknown
Unknown 20000000003FDC50 Unknown Unknown Unknown
test2 40000000000027C0 Unknown Unknown Unknown
可以这样实现吗?应该可以啊,谢谢!
回复列表 (共10个回复)
沙发
adda [专家分:1520] 发布于 2011-08-18 09:15:00
warning #8055: The procedure has a dummy argument that has the ALLOCATABLE, ASYNCHRONOUS, OPTIONAL, POINTER, TARGET, VALUE or VOLATILE attribute. Required explicit interface is missing from original source. [SHUZU]
板凳
cgl_lgs [专家分:21040] 发布于 2011-08-18 09:40:00
楼主的编译器有问题啊,你用的是什么编译器?
3 楼
dongyuanxun [专家分:7180] 发布于 2011-08-18 09:56:00
我总觉的这样玩是F2003的
Fortran很久不写的路过
4 楼
cgl_lgs [专家分:21040] 发布于 2011-08-18 10:02:00
主要是F2003编译器应该会提示这有个错误(至少也是警告⚠)所以楼主不应该看不见的。
这样的东东必须使用Interface或是module
5 楼
cgl_lgs [专家分:21040] 发布于 2011-08-18 10:05:00
主要是F2003编译器应该会提示这有个错误(至少也是警告⚠)所以楼主不应该看不见的。
这样的东东必须使用Interface或是module
6 楼
Amely [专家分:10] 发布于 2011-08-20 11:21:00
[quote]
warning #8055: The procedure has a dummy argument that has the ALLOCATABLE, ASYNCHRONOUS, OPTIONAL, POINTER, TARGET, VALUE or VOLATILE attribute. Required explicit interface is missing from original source. [SHUZU][/quote]
这是什么意思?
7 楼
Amely [专家分:10] 发布于 2011-08-20 11:25:00
[quote]楼主的编译器有问题啊,你用的是什么编译器?[/quote]是在sgi的服务器上编译的,ifort -o,linux操作系统
8 楼
Amely [专家分:10] 发布于 2011-08-20 11:27:00
[quote]我总觉的这样玩是F2003的
Fortran很久不写的路过[/quote]这是啥意思啊。F2003,是什么?
9 楼
cgl_lgs [专家分:21040] 发布于 2011-08-22 12:17:00
F2003是Fortran的2003标准:)
看来Intel编译器这个容错整的有问题啊。
楼主最好是把那个函数放到一个Module里。
10 楼
Amely [专家分:10] 发布于 2011-08-24 10:50:00
[quote]F2003是Fortran的2003标准:)
看来Intel编译器这个容错整的有问题啊。
楼主最好是把那个函数放到一个Module里。[/quote]
明白了,谢谢!
我来回复