2016-07-25 33 views
1

私は最初の組み込みアプリケーションを開発するために、EFM32ggボードとgccコンパイラでFreeRTOS V9を使用しています:) 私は自分のメモリリークアプリケーション(基本的なもの)、それを行うための技術やアルゴリズムはありますか?FreeRTOSでメモリリークを検出する方法

+0

注意深いプログラミングが最善の方法です。特定の問題がある場合は、具体的な方法を使用します。ダイナミックアロケーションを使用しないと、メモリリークは発生しません。 –

+0

あなたの速い応答のためのThx @EugeneSh。ダイナミックアロケーションを使用するとメモリリークの問題が発生するのを防ぐことができると思いました。なぜなら、OSはヒープスキームに従ってメモリを管理する責任があるからです。メモリリークを検出するためにどのようなアプローチが使用できるのかを知りたい。 –

+0

動的メモリは 'malloc'を使用しています。あなたは 'malloc'を呼び出すたびに' free'を呼び出す責任があります。私はfreertosに精通していませんが、Valgrindのようなツールは、あなたのプラットフォームで利用可能な場合、メモリリークを検出することができます。代わりに、あなたの 'malloc'呼び出しの数が' free'の数に等しいことを確認してください。 –

答えて

3

FreeRTOSはメモリをリークすることはありませんが、アプリケーションがフリーであるため、FreeRTOS以外のアプリケーションと同じ方法で検出できます。メモリ割り当てがpvPortMalloc()むしろのmallocよりvPortFree()、(呼び出しを使用

)およびfree()を直接(http://www.freertos.org/a00111.html)、及びこれらの関数への呼び出しは、トレースツール(http://www.freertos.org/trace)で、または単ににより追跡することができます関連するトレースマクロを定義します。これはトレースツールがどのように機能するかを示します(http://www.freertos.org/rtos-trace-macros.html)。

+0

静的割り当てを使用するオプションもあることに注意してください。ありがとう! – rjp

関連する問題