1. ホーム
  2. c++

[解決済み] メモリーストンプとは?

2022-12-10 17:17:11

質問

私は今 このブログの記事 を見つけました。

メモリを踏みつぶすことが簡単にできるC++プログラム (マネージドコードの世界に生まれた人なら、おそらく聞いたこともないようなことでしょう。 マネージドコードの世界に生まれた人は聞いたこともないでしょう)。

そして実際、私は聞いたことがありません!

では、記憶を踏みつける、ストンプメモリーというのは?それはいつ起こるのでしょうか?

どうすれば解決するの?

コードの一部が、別のコードが競合する方法でそのメモリを使用していることに気づかずに、メモリを操作すると、メモリは踏みつぶされます。メモリが踏みつけられるには、いくつかの一般的な方法があります。

1 つは、たとえば 100 バイトのメモリを割り当てた後、100 番目のアドレスを超えて何かを保存することです。このメモリは、まったく異なるものを保持するために使用されるかもしれません。これは、何かが踏みつけられた犠牲者にアクセスしようとしたときに問題が発生し、踏みつけたコードがまったく無関係である可能性があるため、特にデバッグが困難です。

もうひとつは、解放された後のメモリへのアクセスです。そのメモリは別のオブジェクトのために割り当てられている可能性があります。この場合も、問題を示すコードは、同じアドレスを取得した新しく割り当てられたオブジェクトに関連し、問題を引き起こしたコードとは無関係である可能性があります。