dsPic30/33 および 18E/F パーツは、奇数アドレスのメモリに 16 ビット アクセスが行われると、メモリ フォールトを生成します。malloc() を使用してヒープ メモリを割り当てる場合、リターン アドレスはワード アラインされることが保証されますか? (つまり偶数)
malloc は、単語ではなくバイト単位で引数を取ることを思い出してください。
私が見つけたドキュメント (16 ビット言語ツール ライブラリ リファレンス マニュアル 50001456J.pdf) は、この問題については沈黙しています。
==== 編集: 私は malloc() から偶数 (ワードアラインされた) アドレスしか受け取ったことがないので、これまでのところすべてうまく機能していることを付け加えておきます。それにもかかわらず、奇妙なアドレスを取得すると、私のコードはトラップを引き起こします (私は のようなことを実行するため((uint16_t *)foo)[3] = 20000;
)。したがって、malloc() によって常にアドレスも返されるようにしたいと考えています。