Rust part26 (774レス)
1-

1
(1): 09/20(金)22:18 ID:c48cFuZJ(1/3) AAS
公式
外部リンク:www.rust-lang.org
外部リンク:blog.rust-lang.org
外部リンク:github.com

公式ドキュメント
外部リンク:www.rust-lang.org

Web上の実行環境
外部リンク:play.rust-lang.org

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
外部リンク:doc.rust-lang.org
省11
755: 11/10(日)22:41 ID:E3OFY7Tp(2/2) AAS
>>753
What do you mean? What I want to do is talking and having a discussion, not searching.
756: 11/10(日)22:48 ID:tFJCBt9m(12/13) AAS
>>754
> そういう特殊な環境を出してるのは俺ではないからね
あれ、そうだっけって思って辿ってみたら言い出してたの>>604だったわ
やっぱお前じゃねーか複おじ

プロセスにしろ組み込みのプログラムにしろ、OSだかシステムファームウェアだかの外部の管理者的存在が行儀の悪いやつのケツを拭いてくれてるだけのことを、
常識的のあるプログラマは「リークしていない」とは言わないんだよ
757: 11/10(日)23:04 ID:nOHdM7oG(2/2) AAS
プログラムの最後に行儀よくbrkやsbrkでOSへメモリを解放しているアロケーターを見たことないな
OSにとってはどうでもいいことだからそんな行儀よさは不要なのだろう
ましてやアロケーターの内部でフラグなどをオフにするだけのfree()はプログラムの最後にいらない
実行中に再利用できるようにするかどうかが本質だろうね
758: 11/10(日)23:16 ID:tFJCBt9m(13/13) AAS
えーではリークの定義に関して直接的反論はなしということで
以下はすべて誤りであったということでよろしいですね
対戦ありがとうございました

>>593「freeせずにプログラムが終了したり落ちたりしてもメモリリークは起きない」
>>604「freeを忘れてもあるいはfreeせぬまま異常終了となってもその仕組みによりメモリリークは起きない」
>>631「そしてfree()せずにプログラムが終了してもメモリリークは起きない」
>>744「sbrkのあるOS環境ならsbrkでOSへ全メモリを返還できるのはその通りだがそれをしなくてもプログラム終了後にメモリリークは起きない」
>>746「普通の仮想メモリOS環境ならstaticでもBox::leakでもプログラム終了後にメモリリークは起きない」
「そうでない特殊なOSや組み込み環境ならばそれ用に用意するメモリアロケータをプログラム終了直前に呼び出して全メモリ返却させればメモリリークは起きない」
759: 11/10(日)23:26 ID:mfp7bShs(3/3) AAS
static mutは明らかにunsafeなわけだが
紙一重でunsafeとは言えないstatic変数のことを
警戒するかそれとも無駄な警備を極限まで捨てた合理主義の皇帝みたいに思うか
そういう対立はよくある
760: 11/10(日)23:33 ID:xIqOi7JH(10/10) AAS
プログラム終了後にメモリリークが起きるとすればOSが面倒をみてくれない環境だけだから
そういう環境では特殊な専用のメモリアロケータを用意するしかないだろうね
それならその自作のメモリアロケータをプログラム終了時に呼んで後始末させればメモリリークは防げる
Rustのstaticでヒープを持つ型を使っても最後まで使うメモリをBox::leak()で確保してもメモリリークは起こらないので安心していい
761: 11/11(月)00:17 ID:4hLj+VPf(1) AAS
Windows/Linux/macOSあたりなら
ファイルハンドルを閉じずにプログラム終了しても
OSが閉じてくれるから何の問題もない
的な主張?
762: 11/11(月)00:20 ID:VUm74iyn(1/2) AAS
> プログラム終了後にメモリリークが起きるとすればOSが面倒をみてくれない環境
また実在しない環境の話し始めた
763: 11/11(月)00:28 ID:VUm74iyn(2/2) AAS
間違いを認めなくても勝手にすりゃいいけど、そんなんじゃ誰とも意思疎通できないままだぞ
いくら長文を書き連ねても一緒
764: 11/11(月)00:56 ID:If7GINDb(1/3) AAS
2種類ある

OSレベルのclose (例えばC言語でのシステムコールを呼ぶclose()) ならばOSが処理してくれるので異常終了含めてプログラム終了時にcloseしていなくても構わない
ただし各言語ライブラリのバッファリングなど他の機能を持つcloseはプログラム終了までに自分でcloseしないとその機能が完遂しない

一方でメモリ解放の場合
OSレベルのメモリ解放 (例えばbrk/sbrk) ならばOSがそのプログラムの仮想メモリ全体を無効にするのでプログラム終了時に解放していなくても構わない
メモリアロケーターライブラリのレベルのメモリ解放 (例えばfree()) もOSにとっては全く無関係な話なのでプログラム終了時に解放していなくても構わない
765
(2): 11/11(月)01:04 ID:S8QwpOFj(1/4) AAS
組み込みは詳しくないんだが今ってOSを使わない
組み込みでRustとか使うの?
Rustのターゲットって多分何らかのOSありきだよね
766: 11/11(月)01:08 ID:BN15+aOP(1/3) AAS
>>765
語尾にオジを付けな
767
(1): 11/11(月)01:10 ID:S8QwpOFj(2/4) AAS
マ板久々なので意味がわからないww
768
(1): 11/11(月)01:11 ID:S8QwpOFj(3/4) AAS
webassemblyもなんか微妙な感じだしもったいない
769: 11/11(月)01:13 ID:BN15+aOP(2/3) AAS
>>767
そっか、じゃあ過去のRust本スレを4年分復習してきな
あとここはム板だボケジジイ
770: 11/11(月)01:16 ID:S8QwpOFj(4/4) AAS
すまんのうww
771
(1): 11/11(月)01:27 ID:If7GINDb(2/3) AAS
>>765
OS無しにも対応している
Rustの標準ライブラリstd::はOS前提の機能も入っていてOS無しだと機能しないものもある
Rustの必須な言語機能はcore::ライブラリに部分に分離してまとめてあるので
ベアメタルな組み込みなどではstd::を使わない#![no-std]を指定してcore::を使う
core::では数値型や配列やスライスに文字列(str)およびその複合型が使えるがヒープは対象外なのでVecやStringは標準機能としては使えないといった違いがある
772: 11/11(月)01:31 ID:If7GINDb(3/3) AAS
>>768
Wasm自体ブラウザ内も外もどんどん利用が増えてる
もちろんRustで記述が定番化してる
773: 11/11(月)01:32 ID:BN15+aOP(3/3) AAS
>>771
とこういった感じの書き込みをするRust信者が複おじ
このスレを読む上での必須知識だから覚えておくように
774: 11/11(月)07:39 ID:P9CdfRTw(1) AAS
>>732
これ本当?
そうだとするとstatic使った動的ライブラリをアンロードしたら本物のリークが起きる可能性があるが。
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.332s*