1

組み込みシステムのメモリ リークをチェックする必要があります。

IDE は HEW で、uCOSIII RTOS を使用しています。

Valgrind は上記の構成をサポートしていません。メモリ リークをチェックするためのツールまたは方法を提案してもらえますか?

4

4 に答える 4

5

組み込みシステムでメモリを動的に割り当てる最初のルールは「しない」です。実行の開始時にすべてを一度割り当ててから、そのままにしておきます。mallocそれ以外の場合は、 (または同様の操作)が失敗 したときに何をすべきかを評価して決定する必要があります。

実行時にメモリを動的に割り当てる必要がある場合は、最も単純な方法で、ロギングインフラストラクチャを使用して、ラッパーを記述してmalloc/への呼び出しを追跡できる場合があります。free次に、割り当てと割り当て解除がいつどこで発生しているかを追跡し、不足しているものを確認できます。

于 2013-02-19T13:49:27.197 に答える
0

あなたの要件は完全に明確ではありません。あなたの環境でメモリリークを見つけることができる「valgrind」としてツールを探しているなら; それを見つけるのは難しいです。

コードがある場合は、特定のアプリケーションですべてのメモリ割り当てとメモリの解放を確認できます。リンク 1 リンク 2として

また、メモリリークを見つけることができるそれらを実行することによって利用可能ないくつかのファイルがあります。

http://code.axter.com/debugalloc.cpp
http://code.axter.com/debugalloc.h

http://code.axter.com/debuglogger.cpp
http://code.axter.com/debuglogger.h

http://code.axter.com/debuglog.c
http://code.axter.com/debuglog.h
  1. debugalloc.* コードには、メモリ リークを追跡する機能があり、コメントに説明と使用情報が含まれています。

  2. debuglogger.* コードには、コードをプロファイリングするためのコードが含まれています。

  3. debuglog.* は、限定された C バージョンのコードです。

于 2013-02-19T13:16:54.060 に答える
0

Samba で使用されるコア メモリ アロケータであるlibtallocを見てください。atexit()またはを持っていない場合、すぐに使用できるわけではありませんがstdio.h、環境に移植するのにそれほど多くの作業は必要ありません。

開始するには、talloc_enable_leak_report_full()talloc_report_full() (特に) を参照してください。

于 2013-02-22T03:45:32.713 に答える