関数型プログラミング言語Haskell Part34 (677レス)
上
下
前
次
1-
新
676
(1)
: 10/08(水)23:41
ID:jkiZK6Mq(1)
AA×
>>673
>>668
[240|
320
|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
676: [sage] 2025/10/08(水) 23:41:30.24 ID:jkiZK6Mq >>673 ゴールがわからないので100点のご高説は無理だが30点の理由は説明しといてあげる C言語という特定の言語実装における制約がメモリ管理が必要な言語全般に対しても当てはまると考えてるのが根本的な間違い >配列を返す関数の時点で関数を使った後は必ずメモリの開放が必要になるのか。 >>668のコードで(明示的な)メモリ解放が必要になるのはヒープに動的にメモリをアロケートしたからであって配列を返すからではない C言語では配列がfirst classではないので配列をそのまま返すことは不可能 C言語でも構造体ならfirst classなので配列という概念を表現した構造体を作って静的配列を返すようにすれば(明示的な)メモリ開放は不要 C言語にはないがジェネリック等の抽象化機構を備えた言語であれば静的配列を使って任意長の配列に対するmap関数も書ける >開放が必要だから、参照を持つためにポインタへの保存が必須 動的にアロケートするものは実行時になるまで必要なメモリサイズがわからないから言語に関係なくポインタ的なものでしか表現しようがない 動的にアロケートしたものだからポインタが必須、ヒープに動的にアロケートしたものだから後で(明示的な)開放が必要なのであって、開放が必要だからポインタへの保存が必須という因果関係ではない http://mevius.5ch.net/test/read.cgi/tech/1639713446/676
ゴールがわからないので点のご高説は無理だが点の理由は説明しといてあげる 言語という特定の言語実装における制約がメモリ管理が必要な言語全般に対しても当てはまると考えてるのが根本的な間違い 配列を返す関数の時点で関数を使った後は必ずメモリの開放が必要になるのか のコードで明示的なメモリ解放が必要になるのはヒープに動的にメモリをアロケートしたからであって配列を返すからではない 言語では配列が ではないので配列をそのまま返すことは不可能 言語でも構造体なら なので配列という概念を表現した構造体を作って静的配列を返すようにすれば明示的なメモリ開放は不要 言語にはないがジェネリック等の抽象化機構を備えた言語であれば静的配列を使って任意長の配列に対する関数も書ける 開放が必要だから参照を持つためにポインタへの保存が必須 動的にアロケートするものは実行時になるまで必要なメモリサイズがわからないから言語に関係なくポインタ的なものでしか表現しようがない 動的にアロケートしたものだからポインタが必須ヒープに動的にアロケートしたものだから後で明示的な開放が必要なのであって開放が必要だからポインタへの保存が必須という因果関係ではない
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 1 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
ぬこの手
ぬこTOP
0.039s