问一个关于fortran内存管理的问题

frajldss 2008-11-30 10:44:06
知道用PB的人中很多都是精通很多语言的行家,至少C++ 方面是,

没有fortran的板块,只能在这里看看有没有人知道。。


问一个关于fortran内存管理的问题


!以下是代码

module TestDataModule

type SubData
real(kind=8) x
real(kind=8) y
end type

type NewData
real(kind=8) a
real(kind=8) b
type(SubData), allocatable :: point(:)
end type

contains

!开辟内存函数
subroutine CallMemory( num1,num2,called_data )

integer, intent(in):: num1,num2
type (NewData), allocatable:: called_data(:)

integer i

allocate (called_data(1:num1))
do i=1,num1
allocate(called_data(i)%point(1:num2))
end do

end subroutine

!删除内存函数
subroutine DeleteMemory( deleted_data )

type (NewData), allocatable:: deleted_data(:)
!问(3) :可能是上句的定义不正确????????????
integer num1,num2,i

num1=size(deleted_data)
do i=1,num1
deallocate (deleted_data(i)%point)
end do
deallocate(deleted_data)
!问(3) : 这里回出错!!!!!!!

end subroutine

!调用函数
subroutine TestFun()

type (NewData), allocatable:: mydata(:)
integer number1,number2

number1=2
number2=3

call CallMemory(number1,number2,mydata)
!函数返回后 mydata 的编号是 mydata(0:1),

!问(1) :怎么变成从 1开始编号 ? mydata(1:2)

!............................
!
mydata(1)%a=1.0
mydata(1)%b=2.0

mydata(1)%point(1)%x=31.0
!问(2) : 这里怎么无法赋值 ?
mydata(1)%point(1)%y=32.0
mydata(1)%point(2)%x=41.0
mydata(1)%point(2)%y=42.0
mydata(1)%point(3)%x=51.0
mydata(1)%point(3)%y=52.0


mydata(2)%a=6.0
mydata(2)%b=7.0

mydata(2)%point(1)%x=81.0
mydata(2)%point(1)%y=82.0
mydata(2)%point(2)%x=91.0
mydata(2)%point(2)%y=92.0
mydata(2)%point(3)%x=101.0
mydata(2)%point(3)%y=102.0


write(*,*),mydata(1)%a,mydata(2)%point(3)%y

!............................
call DeleteMemory(mydata)

end subroutine

end module


program TestFortran

use TestDataModule
implicit none

call TestFun()

end program TestFortran

...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liubocy 2008-11-30
  • 打赏
  • 举报
回复
不懂 UP
frajldss 2008-11-30
  • 打赏
  • 举报
回复
转自:
http://bbs.pfan.cn/post-290125.html


作者:liangrong
发表时间:2008-11-30 0:34:00
應是版本的關係
較早的compiler不支持 allocatable 的
dummy arguments 及type components
可以將程序中有寫 allocatable 的語句
都改為 pointer 試試看
jlwei888 2008-11-30
  • 打赏
  • 举报
回复
其实学了PB,再学其它就困难了!
帮顶!
LamarChen 2008-11-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jlwei888 的回复:]
其实学了PB,再学其它就困难了!
[/Quote]

的确如此哦

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧