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