make sure
リンク: sccc: 第4章に関する話題.
unlink の所ですが、 The malicious argument, of course, makes sure that the location where dlmalloc finds the PREV_INUSE bit is clear, tricking dlmalloc into believing the second chunk is unallocated--so the free() operation invokes the unlink() macro to consolidate the two chunks. の訳が、内容がわかってないのに訳しているような訳になっています。
-4 と書くことで、3番目のブロックではなく、2番目、すなわち自分自身を読み込ませるところがポイントです。
-4 ずれているので、先頭4バイトがサイズになります。
これを「偶数」にしておけば、IN_USE ビットが落ちていることになり、2番目のブロックがフリーだと騙せるわけです。図4-14 に「even」と書いてあるのは、そういう意味です。ここも「偶数」と訳す方が親切でしょう。
なので、「確認する」という訳は誤りです。
「dlmalloc が IN_USE ビットが落ちていると思い込ませ」ぐらいでしょうね。
make sure には『手段を講じる』という意味もあるようだけど、そんな使い方ですかね。
「もちろん」がちょっと浮いちゃってるな。
コメント