问一个fortran内存管理的问题

frajldss 2008-11-28 04:57:26

!以下是代码

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

...全文
290 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 試試看
frajldss 2008-11-30
  • 打赏
  • 举报
回复
up
suilj 2008-11-29
  • 打赏
  • 举报
回复
用过几年,但从没动过内存。。。。
帅得不敢出门 2008-11-29
  • 打赏
  • 举报
回复
up too
frajldss 2008-11-29
  • 打赏
  • 举报
回复
加分了啊!!!还有知道的吗??
frajldss 2008-11-29
  • 打赏
  • 举报
回复
还有知道的吗??
Longinc 2008-11-29
  • 打赏
  • 举报
回复
UP
ZhengZhiRen 2008-11-29
  • 打赏
  • 举报
回复
不懂
up
wudeshou82666 2008-11-29
  • 打赏
  • 举报
回复
UP
就呆在云上 2008-11-28
  • 打赏
  • 举报
回复
100的大贴

不懂
帮顶
frajldss 2008-11-28
  • 打赏
  • 举报
回复
?
sagegz 2008-11-28
  • 打赏
  • 举报
回复
不太清楚!帮顶!
wuyu637 2008-11-28
  • 打赏
  • 举报
回复
不懂。。。。
frajldss 2008-11-28
  • 打赏
  • 举报
回复
目前用到了,没办法
xhs_lh04 2008-11-28
  • 打赏
  • 举报
回复
FORTRAN语言早丢回老家了

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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