2

だから私はで実行されているatマイクロコントローラーでCMSIS-RTOSメールキューメカニズムを使用しています。そして、以前に割り当てられたメールボックス要素を osMailFree() で時々解放すると、osOKosErrorValueなどのosStatus型の値またはドキュメントに記載されているものの代わりに、何らかのアドレスが返されました。Keil uVision 5.0.5STM32F427180MHz

このアドレスは、 osMailQDefで割り当てられたサービス構造体のos_mailQ_p_##blahlbah要素を指しています。これは、同じosMailQDefマクロで割り当てられた実際のデータ バッファーの末尾を超えて指していることも意味します。

私の構造はすべて静的に割り当てられます。スレッドのスタック サイズ (OS_STKSIZE 600) もかなりきれいに見えます。

あるスレッドがメール要素を割り当てられない ( osMailAlloc()が 0 を返す) 一方で、他の待機中のスレッドが常にosEventTimeoutを取得しているときに、私のプログラムが早い段階または後で状況に陥るという事実がなければ、気にしません。すべてのメモリブロックが使用されているようですが、使用するたびに正直に解放しています(オブジェクトのデストラクタをラップして、本当に解放されていることを確認してください)。

それは何を意味し、どこを掘ればよいのでしょうか?

4

1 に答える 1