@@ -112,7 +112,7 @@ Rustと所有権システムの規則と経験を積むにつれて、自然に
112
112
>
113
113
> スタックもヒープも、実行時にコードが使用できるメモリの一部になりますが、異なる手段で構成されています。
114
114
> スタックは、得た順番に値を並べ、逆の順で値を取り除いていきます。これは、
115
- > * last in, first out* (` 訳注 ` : あえて日本語にするなら、けつ入れ頭出しといったところでしょうか )と呼ばれます。
115
+ > * last in, first out* (` 訳注 ` : あえて日本語にするなら、「最後に入れたものが最初に出てくる」といったところでしょうか )と呼ばれます。
116
116
> お皿の山を思い浮かべてください: お皿を追加する時には、山の一番上に置き、お皿が必要になったら、一番上から1枚を取り去りますよね。
117
117
> 途中や一番下に追加したり、取り除いたりすることもできません。データを追加することは、
118
118
> * スタックにpushする* といい、データを取り除くことは、* スタックからpopする* と表現します(` 訳注 ` :
@@ -125,8 +125,8 @@ Rustと所有権システムの規則と経験を積むにつれて、自然に
125
125
> コンパイル時にサイズがわからなかったり、サイズが可変のデータについては、代わりにヒープに格納することができます。
126
126
> ヒープは、もっとごちゃごちゃしています: ヒープにデータを置く時、あるサイズのスペースを求めます。
127
127
> OSはヒープ上に十分な大きさの空の領域を見つけ、使用中にし、* ポインタ* を返してきます。ポインタとは、その場所へのアドレスです。
128
- > この過程は、* ヒープに領域を確保する* と呼ばれ、時としてそのフレーズを単に* allocateする* などと省略したりします。
129
- > (` 訳注 ` : こちらもこなれた日本語訳はないでしょう。allocateはメモリを確保すると訳したいところですが )
128
+ > この過程は、* ヒープに領域を確保する(allocating on the heap) * と呼ばれ、時としてそのフレーズを単に* allocateする* などと省略したりします。
129
+ > (` 訳注 ` : こちらもこなれた日本語訳はないでしょう。allocateは「メモリを確保する」と訳したいところですが )
130
130
> スタックに値を載せることは、メモリ確保とは考えられません。ポインタは、既知の固定サイズなので、
131
131
> スタックに保管することができますが、実データが必要になったら、ポインタを追いかける必要があります。
132
132
>
@@ -564,7 +564,8 @@ do if Rust copied the heap data as well</span> -->
564
564
その変数が使っていたヒープメモリを片付けると述べました。しかし、図4-2は、
565
565
両方のデータポインタが同じ場所を指していることを示しています。これは問題です: ` s2 ` と` s1 ` がスコープを抜けたら、
566
566
両方とも同じメモリを解放しようとします。これは* 二重解放* エラーとして知られ、以前触れたメモリ安全性上のバグの一つになります。
567
- メモリを2回解放することは、メモリの退廃につながり、さらにセキュリティ上の脆弱性を生む可能性があります。
567
+ メモリを2回解放することは、memory corruption (` 訳注 ` : メモリの崩壊。意図せぬメモリの書き換え) につながり、
568
+ セキュリティ上の脆弱性を生む可能性があります。
568
569
569
570
<!-- To ensure memory safety, there’s one more detail to what happens in this -->
570
571
<!-- situation in Rust. Instead of trying to copy the allocated memory, Rust -->
@@ -672,7 +673,7 @@ println!("s1 = {}, s2 = {}", s1, s2);
672
673
<!-- This works just fine and explicitly produces the behavior shown in Figure 4-3, -->
673
674
<!-- where the heap data *does* get copied. -->
674
675
675
- これは単純にうまく動き 、図4-3で示した動作を明示的に生み出します。ここでは、
676
+ これは問題なく動作し 、図4-3で示した動作を明示的に生み出します。ここでは、
676
677
ヒープデータが* 実際に* コピーされています。
677
678
678
679
<!-- When you see a call to `clone`, you know that some arbitrary code is being -->
@@ -752,9 +753,9 @@ Rustには`Copy`トレイトと呼ばれる特別な注釈があり、
752
753
<!-- `(i32, i32)` is `Copy`, but `(i32, String)` is not. -->
753
754
754
755
* あらゆる整数型。` u32 ` など。
755
- * 論理値型、 ` bool ` 、 ` true ` と` false ` という値がある。
756
+ * 論理値型である ` bool ` 。 ` true ` と` false ` という値がある。
756
757
* あらゆる浮動小数点型、` f64 ` など。
757
- * 文字型、 ` char ` 。
758
+ * 文字型である ` char ` 。
758
759
* タプル。ただ、` Copy ` の型だけを含む場合。例えば、` (i32, i32) ` は` Copy ` だが、
759
760
` (i32, String) ` は違う。
760
761
0 commit comments