メモリのどの部分をヒープ、スタックなどで調べるのですか?私は現在、C言語のプログラムを見ています。.elfファイルを見ると、プログラムが使用しているメモリアドレスを見ることができますが、ヒープやスタックにあるかどうかはわかりません。Cでのメモリ割り当て
答えて
これは、コンパイルされたコード自体の静的解析からは分かりづらいです。静的に初期化されたデータ領域、および静的初期化されていない(BSS)セクションも見ることができるはずですが、スタック、ヒープなどに関してロードされる方法は、プラットフォームの実行可能ローダに依存します。
埋め込みプラットフォームで作業している場合は、プログラムのビルドに加えてリンカスクリプト(lcfファイル)を使用して、スタック、ヒープ、intvec、bss、テキスト、コード)、メモリへの配置(L1キャッシュ、L2キャッシュ、またはDDRのいずれか)、およびボードにロード中の開始/終了アドレス。
lcfのキーワードを正しく理解するために、リンカーのマニュアル(コンパイラのインストールディレクトリにあります)を見てください。
また、セクションを分析するもう1つの方法があります。プロジェクトの「マップファイル」を作成し、それを調べることができます。プログラム内のすべてのセクションとそのアドレスがリストされます。
無料のデバッガであるollydbgを試してみることができます。この欠点の1つは、アセンブリ形式のすべてを表示することですが、スタック内の内容、ヒープ、さらにはレジスタ内の内容を表示します。これがあなたが探しているものなのかどうかは分かりません。
すべてのプラットフォームをサポートしていますか? –
私はUnixシステムのどこでそれを書いたのか分からなかった。謝罪します。残念ながらウィンドウ上でしか動作しません。しかし、私はほとんどのデバッガ/ディスアセンブラは本質的に同じことをすると仮定しますが、これは前に使用した唯一のものです。 –
- 1. メモリの割り当て(C)
- 2. メモリの割り当て/割り当て解除(WindowsではC++)
- 3. C++の動的割り当てメモリ内での動的メモリ割り当て
- 4. C++クラス配列のメモリ割り当ての再割り当て
- 5. Cでの動的メモリ割り当て
- 6. C++でのメモリ割り当て
- 7. ポインタとCでのメモリ割り当て
- 8. C++のメモリ割り当ての問題
- 9. ArcGIS C#のメモリ割り当てのクラッシュ
- 10. cの配列のメモリ割り当て
- 11. Cのmallocメモリ割り当て方式
- 12. C(割り当て)のメモリ管理
- 13. c#3dアプリケーションのメモリ割り当て
- 14. 客観C:メモリの割り当て
- 15. C++メモリ割り当ての質問
- 16. C++ポインタとメモリの割り当て
- 17. C++コードのメモリ割り当てエラー
- 18. .net c#クラスのメモリ割り当て
- 19. C++のメモリ割り当てnew []とdelete []
- 20. 派生C++クラスのメモリ割り当て
- 21. C++リリース、メモリの割り当ては、コンストラクタ
- 22. C++のメモリ割り当てHOWTO
- 23. メモリ割り当て
- 24. 割り当てメモリ
- 25. 割り当てメモリ
- 26. メモリ割り当て
- 27. メモリ割り当て
- 28. 割り当てメモリ**
- 29. オブジェクトにメモリを割り当てるC#
- 30. C++マルチスレッド:スレッドセーフなメモリ割り当て
正確にどのプラットフォームを使用していますか? –