くだすれFORTRAN(超初心者用)その4at TECHくだすれFORTRAN(超初心者用)その4 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト79:デフォルトの名無しさん 09/02/24 00:15:50 >>78 POINTERに直すだけなら簡単。 ただALLOCATABLEに比べて自由度が大きい分最適化やチェックに支障が出るらし。 MODULE m_test CONTAINS subroutine alloc4i(imem, msize) integer, POINTER :: imem(:) integer, INTENT(IN) :: msize if ( .not. ASSOCIATED(imem) ) then allocate( imem(msize), stat=ier ) if (ier .ne. 0) stop else stop endif return end subroutine alloc4i END MODULE m_test program mtest USE m_test integer, POINTER :: imem1(:), imem2(:) msize = 100*100 * 200 call alloc4i(imem1, msize) call alloc4i(imem2, msize) PRINT *, SIZE(imem1), SIZE(imem2) stop end ASSOCIATED だけでいいのか今一自信なし。 80:69 09/02/24 07:04:42 >>79 何から何まで申し訳ありません。 コードはコンパイル1発でOKでした。 allocate後は配列と同じように使えるみたいですし、cのポインタより保護されている感が あっていいですね。危険性に関しては、昔のメモリマネジメントより随分安全と感じますが、 別ルーチンでしっかりチェックするつもりです。 ただ、f90は利用情報が少ないので、少しずつ勉強しながら使って行こうと思います (周りに利用者がいない。f77かcかVB)。特にPCの処理系では、方言等ありそうですね。 規格にも目を通したいと思います。 色々とありがとうございました。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch