0

私は uC/os II の初心者で、メモリ管理について混乱しています。関数 OSMemGet() では、タスクがメモリ領域のリンク リスト (OSMemFreeList) の最初のブロックを必要とすることがわかります。次に、OSMemPut() で、使用されたブロックをメモリ クリーンなしで OSMemFreeList の最初のブロックに戻します。ブロックを取得するタスクがある場合は、int (例: 250) を格納し、このブロックを返します。このタスクの後半で、OSMemGet() がこのブロックを再び要求します。int 250 はまだこのブロックにありますか? 読み直すにはどうすればいいですか?

4

2 に答える 2

0

あはは、以前に保存されたコンテンツを取得する方法がわかりました。OSMemFreeList から取得するすべてのメモリ ブロックは、最初の 4 バイトに次のブロックのアドレスを格納します。これらのバイトをスキップする必要があります。その後、これらのデータを再度読み取ることができます。ucos は、OSMemPut() でメモリ ブロックをクリアしません。

于 2013-09-26T05:47:18.637 に答える