Rust part27at TECH
Rust part27 - 暇つぶし2ch1:デフォルトの名無しさん
24/12/02 22:32:50.31 D+1pIyvG.net
公式
URLリンク(www.rust-lang.org)
URLリンク(blog.rust-lang.org)
URLリンク(github.com)

公式ドキュメント
URLリンク(www.rust-lang.org)

Web上の実行環境
URLリンク(play.rust-lang.org)<)

※Rustを学ぶ際に犯しがちな12の過ち
URLリンク(dystroy.org)

※Rustのasyncについて知りたければ「async-book」は必読
URLリンク(rust-lang.github.io)

※次スレは原則>>980が立てること

前スレ
Rust part26
スレリンク(tech板)

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
スレリンク(tech板)

2:デフォルトの名無しさん
24/12/02 22:43:23.38 26QdDvTv.net
乙巳

3:デフォルトの名無しさん
24/12/03 07:46:32.00 Kek2ztWF.net
Rust The Book (日本語版)
URLリンク(doc.rust-jp.rs)
Rust edition guide (日本語版)
URLリンク(doc.rust-jp.rs)
Rust by example (日本語版)
URLリンク(doc.rust-jp.rs)
Rust cookbook (日本語版)
URLリンク(uma0317.github.io)
Rust API guideline (日本語版)
URLリンク(sinkuu.github.io)
Rust nomicon book (日本語版)
URLリンク(doc.rust-jp.rs)
Rust async book (日本語版)
URLリンク(async-book-ja.netlify.app)
Rust WASM book (日本語版)
URLリンク(moshg.github.io)
Rust embeded book (日本語版)
URLリンク(tomoyuki-nakabayashi.github.io)
Rust enbeded discovery (日本語版)
URLリンク(tomoyuki-nakabayashi.github.io)
Rust Design Patterns (日本語版)
URLリンク(qiita.com)
URLリンク(qiita.com)
Rust API guideline (日本語版)
URLリンク(sinkuu.github.io)

4:デフォルトの名無しさん
24/12/03 07:46:58.75 Kek2ztWF.net
Rust Reference Book
URLリンク(doc.rust-lang.org)
Rust Standard Library
URLリンク(doc.rust-lang.org)
Rust rustc Book
URLリンク(doc.rust-lang.org)
Rust rustdoc Book
URLリンク(doc.rust-lang.org)
Rust rustup Book
URLリンク(rust-lang.github.io)
Rust Cargo Book
URLリンク(doc.rust-lang.org)
Rust unstable Book
URLリンク(doc.rust-lang.org)
Rust macro Book
URLリンク(danielkeep.github.io)
Rust CLI (Command Line Interface) apps Book
URLリンク(rust-cli.github.io)
Rust Future Book
URLリンク(cfsamson.github.io)
Rust async-std Book
URLリンク(book.async.rs)
Rust tokio Book
URLリンク(tokio.rs)
Rust serde Book
URLリンク(serde.rs)
Rust Performance Book
URLリンク(nnethercote.github.io)

5:デフォルトの名無しさん
24/12/03 10:17:10.99 CyH0XY+t.net
>>3
何年も更新されてない上に誤訳だらけの非公式翻訳を貼り続けるのいい加減やめろ

前スレの「変数束縛」とか含めて非公式翻訳が勘違い野郎を生む諸悪の根源

6:デフォルトの名無しさん
24/12/03 12:48:40.49 DZc+/1dr.net
スタバのマルチスレッドって効率悪いよね

7:デフォルトの名無しさん
24/12/03 12:56:13.69 EOsQeLM6.net
はいはい、説教おじさんはほっといて気楽に質問してね~。勘違いでもなんでもok。サンプル欲しければコード書きますよ~。

8:デフォルトの名無しさん
24/12/03 15:07:30.04 5xjpr7TI.net
日頃GC付き言語で開発しているからメモリリークがどういったプログラムで起こるのかあんまり実感できない
C言語で書かれたプログラムでメモリリークしやすいプログラムってどんなもんなの?

9:デフォルトの名無しさん
24/12/03 15:08:58.63 2bVb51Ek.net
>>8
最近のPCはメモリたくさん積んでるから、リークしても気にしなくていいよ

10:デフォルトの名無しさん
24/12/03 16:10:27.68 ZsxKPak4.net
メモリプレッシャーがかかっても不必要にメモリをつかみ続けるFirefoxのようなお行儀の悪いプログラムか増えてるからメモリが潤沢にあってもリークは気にしたほうがいい

使い捨てプログラムや低品質でもいいプログラムなら気にしなくてもいいけどそういうのはGC言語でやる

11:デフォルトの名無しさん
24/12/03 16:16:53.07 ey2XQ99f.net
>>8
仕事の製品開発ならgc言語でもメモリプロファイラ一使えよ
ハードの性能向上を無駄に消費するクソソフト多すぎだろ

12:デフォルトの名無しさん
24/12/03 16:51:09.72 0HkaMF/9.net
GC 付きでもメモリリークのようなことが起こることはある。
多くの場合に表面化しないだけ。
プロセスが終わるときにはどうせまるごと回収されるからガッと処理してすぐ終わるようなプログラムでは特に表面化しにくい。
見えにくいからこそ意識的に調査すべきで、 >>11 の意見に同意する。

逆に問題が表面化しやすいのは長期的に起動しっぱなしなもので、わかりやすい例ではウェブサーバ (またはその後ろでサービスを提供するプログラム) などが挙げられる。
ウェブサーバの H2O はそれを防止するのと高速化のためにセッションごとにメモリの塊を確保してその塊の頭から順番に使っていき、セッションが終わると塊をまるごと解放するというメモリ戦略を取ってる。

13:デフォルトの名無しさん
24/12/03 17:09:00.60 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:デフォルトの名無しさん
24/12/03 17:15:10.75 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:デフォルトの名無しさん
24/12/03 17:23:27.47 NKv2UDMA.net
バグが0になるまで投資を続けるのは誰もやらないのに
メモリリークを0にしようって言われたら投資してしまうのが人情というものだ

16:デフォルトの名無しさん
24/12/03 17:54:33.42 aDn+t6mK.net
>>8
ここはRustスレなのに
なぜRustについて全く触れずにC言語の質問をするの?
C言語のスレがあるのだからそちらでしなさい

Rustについて触れずに他の言語の話だけをしている人たちも同罪
必ずRustについても言及しなさい

17:デフォルトの名無しさん
24/12/03 18:02:49.57 cJEFyjqp.net
Rustのメモリ安全性の目的はメモリリークの回避じゃなくてダングリング参照の回避定期
ついでに競合アクセスも防ぐ

18:デフォルトの名無しさん
24/12/03 18:49:23.67 ll5AjBl1.net
今度は「競合アクセス」と来たか

19:デフォルトの名無しさん
24/12/03 19:03:08.79 VEyhp9WQ.net
C言語はfree()しても断片化という問題が発生すると聞いたことがある
断片化してもOSが落ちたりはしないんだろうけど遅くなるとかならないとか・・・

20:デフォルトの名無しさん
24/12/03 20:08:22.57 0HkaMF/9.net
>>19
断片化によって起こるのはメモリ効率の悪さ。
空いてるメモリの総量が充分にあっても必要分だけ連続したメモリがない(メモリ確保に失敗する)ということが起こる。
C では確保したメモリの場所が変わる(アドレスが変わる)ということは起すわけにいかないので断片化はそれなりに深刻な問題になりうる。
GC には copying gc のように不要メモリの回収と同時に再配置するものもある。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch