Rustアンチスレ (202レス)
Rustアンチスレ http://mevius.5ch.net/test/read.cgi/tech/1509028624/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
145: デフォルトの名無しさん [sage] 2022/05/23(月) 09:54:21.07 ID:n2ZPTBPD 一般的に、今回のような多段の計算の場合は、中間領域が少なくとも2つ必要となる なぜなら、一般的には「中間値2=中間値1+次の項目」と順に計算していくためである つまり一般的な場合は、5つの変数の足し算ならば、中間値2つを加えて、計7つの領域を必要とする しかし>>144の結果のアドレスを見ると、確かに中間値は交互にアドレスが異なり2種類だが、全体で6つの領域で済んでいるところに注目 5つの変数の領域は避けられないから、余分に確保されたのは1つのみで済んでいる これがRust 今回用意したTest型はCopyを実装しなかったため、最初の「中間値1=a+b」を計算した時点てaとbは消費されてそれらの領域は解放される そのため次の「中間値2=中間値1+c」の時に、中間値2の領域として既に解放されたaの領域が使われた 実際に中間値2のアドレスがaと同じになっていることで確認できる 同様に中間値3は中間値1と同じアドレスとなっている 結論 Rustでは消費し終えた変数や中間値が使用していたヒープ領域もすぐに再利用されて使い回されるため、 >>137のようなケースでも最小限のメモリしか必要とせずに済む http://mevius.5ch.net/test/read.cgi/tech/1509028624/145
148: デフォルトの名無しさん [sage] 2022/05/23(月) 15:10:34.13 ID:K4XvBL00 >>145 > しかし>>144の結果のアドレスを見ると、確かに中間値は交互にアドレスが異なり2種類だが、全体で6つの領域で済んでいるところに注目 7つ使ってるように見えるんだけど、何を見て6つで済んでるって言えるの? http://mevius.5ch.net/test/read.cgi/tech/1509028624/148
154: デフォルトの名無しさん [sage] 2022/05/30(月) 14:58:44.37 ID:MKPVbFKD >>144 >>145 なーにを馬鹿な考察してんの? おまえの実行するタスクの途中で他のタスクが実行され、そいつが解放したヒープを確保しないことを なんで今時のマルチタスク、マルチユーザOSで保証できるのかと言ってる。 http://mevius.5ch.net/test/read.cgi/tech/1509028624/154
155: デフォルトの名無しさん [sage] 2022/05/30(月) 15:12:27.13 ID:MKPVbFKD >>145 >Rustでは消費し終えた変数や中間値が使用していたヒープ領域もすぐに再利用されて使い回されるため 変数が確保されるのは関数コールの度に毎回上書きされるスタックであてtヒープではない そもそもヒープ領域の確保廃棄で何も問題なければメモリフラグメントなど発生するはずがない。 したがって長期間リブートを想定しないRTOSで、 予めメモリプールを確保してその中で固定的にメモリ割り当てなど行うこと自体全くの無意味ってことだが、 現実はそーじゃない。こんなもんエンベ試験あたりのイロハだろw http://mevius.5ch.net/test/read.cgi/tech/1509028624/155
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s