1 名前:デフォルトの名無しさん [2024/12/02(月) 22:32:50.31 ID:D+1pIyvG.net] 公式 https://www.rust-lang.org/ https://blog.rust-lang.org/ https://github.com/rust-lang/rust 公式ドキュメント https://www.rust-lang.org/learn Web上の実行環境 https://play.rust-lang.org ※Rustを学びたい人はまず最初に公式のThe Bookを読むこと https://doc.rust-lang.org/book/ ※Rustを学ぶ際に犯しがちな12の過ち https://dystroy.org/blog/how-not-to-learn-rust ※Rustのasyncについて知りたければ「async-book」は必読 https://rust-lang.github.io/async-book/ ※次スレは原則>>980 が立てること 前スレ Rust part26 https://mevius.5ch.net/test/read.cgi/tech/1726838318/ ワッチョイスレ プログラミング言語 Rust 4【ワッチョイ】 https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2 名前:デフォルトの名無しさん mailto:sage [2024/12/02(月) 22:43:23.38 ID:26QdDvTv.net] 乙巳
3 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 07:46:32.00 ID:Kek2ztWF.net] Rust The Book (日本語版) https://doc.rust-jp.rs/book-ja/ Rust edition guide (日本語版) https://doc.rust-jp.rs/edition-guide/ Rust by example (日本語版) https://doc.rust-jp.rs/rust-by-example-ja/ Rust cookbook (日本語版) https://uma0317.github.io/rust-cookbook-ja/ Rust API guideline (日本語版) https://sinkuu.github.io/api-guidelines/ Rust nomicon book (日本語版) https://doc.rust-jp.rs/rust-nomicon-ja/ Rust async book (日本語版) https://async-book-ja.netlify.app/ Rust WASM book (日本語版) https://moshg.github.io/rustwasm-book-ja/ Rust embeded book (日本語版) https://tomoyuki-nakabayashi.github.io/book/ Rust enbeded discovery (日本語版) https://tomoyuki-nakabayashi.github.io/discovery/ Rust Design Patterns (日本語版) https://qiita.com/Yappii_111/items/4ccc3a8461cdd4035651 https://qiita.com/Yappii_111/items/654717e6a6a980722189 Rust API guideline (日本語版) https://sinkuu.github.io/api-guidelines/
4 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 07:46:58.75 ID:Kek2ztWF.net] Rust Reference Book https://doc.rust-lang.org/reference/ Rust Standard Library https://doc.rust-lang.org/std/ Rust rustc Book https://doc.rust-lang.org/rustc/ Rust rustdoc Book https://doc.rust-lang.org/rustdoc/ Rust rustup Book https://rust-lang.github.io/rustup/ Rust Cargo Book https://doc.rust-lang.org/cargo/ Rust unstable Book https://doc.rust-lang.org/nightly/unstable-book/ Rust macro Book https://danielkeep.github.io/tlborm/book/ Rust CLI (Command Line Interface) apps Book https://rust-cli.github.io/book/ Rust Future Book https://cfsamson.github.io/books-futures-explained/ Rust async-std Book https://book.async.rs/ Rust tokio Book https://tokio.rs/tokio/tutorial Rust serde Book https://serde.rs/ Rust Performance Book https://nnethercote.github.io/perf-book/
5 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 10:17:10.99 ID:CyH0XY+t.net] >>3 何年も更新されてない上に誤訳だらけの非公式翻訳を貼り続けるのいい加減やめろ 前スレの「変数束縛」とか含めて非公式翻訳が勘違い野郎を生む諸悪の根源
6 名前:デフォルトの名無しさん [2024/12/03(火) 12:48:40.49 ID:DZc+/1dr.net] スタバのマルチスレッドって効率悪いよね
7 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 12:56:13.69 ID:EOsQeLM6.net] はいはい、説教おじさんはほっといて気楽に質問してね~。勘違いでもなんでもok。サンプル欲しければコード書きますよ~。
8 名前:デフォルトの名無しさん [2024/12/03(火) 15:07:30.04 ID:5xjpr7TI.net] 日頃GC付き言語で開発しているからメモリリークがどういったプログラムで起こるのかあんまり実感できない C言語で書かれたプログラムでメモリリークしやすいプログラムってどんなもんなの?
9 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 15:08:58.63 ID:2bVb51Ek.net] >>8 最近のPCはメモリたくさん積んでるから、リークしても気にしなくていいよ
10 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 16:10:27.68 ID:ZsxKPak4.net] メモリプレッシャーがかかっても不必要にメモリをつかみ続けるFirefoxのようなお行儀の悪いプログラムか増えてるからメモリが潤沢にあってもリークは気にしたほうがいい 使い捨てプログラムや低品質でもいいプログラムなら気にしなくてもいいけどそういうのはGC言語でやる
11 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 16:16:53.07 ID:ey2XQ99f.net] >>8 仕事の製品開発ならgc言語でもメモリプロファイラ一使えよ ハードの性能向上を無駄に消費するクソソフト多すぎだろ
12 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 16:51:09.72 ID:0HkaMF/9.net] GC 付きでもメモリリークのようなことが起こることはある。 多くの場合に表面化しないだけ。 プロセスが終わるときにはどうせまるごと回収されるからガッと処理してすぐ終わるようなプログラムでは特に表面化しにくい。 見えにくいからこそ意識的に調査すべきで、 >>11 の意見に同意する。 逆に問題が表面化しやすいのは長期的に起動しっぱなしなもので、わかりやすい例ではウェブサーバ (またはその後ろでサービスを提供するプログラム) などが挙げられる。 ウェブサーバの H2O はそれを防止するのと高速化のためにセッションごとにメモリの塊を確保してその塊の頭から順番に使っていき、セッションが終わると塊をまるごと解放するというメモリ戦略を取ってる。
13 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 17:09:00.60 ID:EOsQeLM6.net] C言語でリークという話なのでこんな感じ。 // メモリリーク例1: mallocした後にfreeし忘れる関数 void leak_in_function() { char* ptr = (char*)malloc(100); strcpy(ptr, "Hello"); // freeがないのでメモリリーク } // メモリリーク例2: 条件分岐でfreeを飛ばしてしまう void conditional_leak(int value) { int* numbers = (int*)malloc(sizeof(int) * 100); if (value < 0) { return; // ここでreturnするとfreeされない } // 処理 free(numbers); } // メモリリーク例3: ポインタの上書きによるリーク void pointer_overwrite() { char* ptr1 = (char*)malloc(50); ptr1 = (char*)malloc(100); // 最初のメモリブロックへの参照が失われる free(ptr1); // 2番目のメモリブロックだけがfreeされる }
14 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 17:15:10.75 ID:EOsQeLM6.net] // メモリリーク例4: 動的配列の不完全な解放 typedef struct { char* name; int age; } Person; void struct_array_leak() { Person* people = (Person*)malloc(3 * sizeof(Person)); for (int i = 0; i < 3; i++) { people[i].name = (char*)malloc(50); strcpy(people[i].name, "John Doe"); } free(people); // name用のメモリがリークする } こういうパターンが多いかな。 C++だと生ポインタ使わなくなるので大分解消されるけど。
15 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 17:23:27.47 ID:NKv2UDMA.net] バグが0になるまで投資を続けるのは誰もやらないのに メモリリークを0にしようって言われたら投資してしまうのが人情というものだ
16 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 17:54:33.42 ID:aDn+t6mK.net] >>8 ここはRustスレなのに なぜRustについて全く触れずにC言語の質問をするの? C言語のスレがあるのだからそちらでしなさい Rustについて触れずに他の言語の話だけをしている人たちも同罪 必ずRustについても言及しなさい
17 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 18:02:49.57 ID:cJEFyjqp.net] Rustのメモリ安全性の目的はメモリリークの回避じゃなくてダングリング参照の回避定期 ついでに競合アクセスも防ぐ
18 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 18:49:23.67 ID:ll5AjBl1.net] 今度は「競合アクセス」と来たか
19 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 19:03:08.79 ID:VEyhp9WQ.net] C言語はfree()しても断片化という問題が発生すると聞いたことがある 断片化してもOSが落ちたりはしないんだろうけど遅くなるとかならないとか・・・
20 名前:デフォルトの名無しさん mailto:sage [2024/12/03(火) 20:08:22.57 ID:0HkaMF/9.net] >>19 断片化によって起こるのはメモリ効率の悪さ。 空いてるメモリの総量が充分にあっても必要分だけ連続したメモリがない(メモリ確保に失敗する)ということが起こる。 C では確保したメモリの場所が変わる(アドレスが変わる)ということは起すわけにいかないので断片化はそれなりに深刻な問題になりうる。 GC には copying gc のように不要メモリの回収と同時に再配置するものもある。