XC32コンパイラを使用してMPLABでコーディングし、動的メモリを使用するコツをつかもうとしているので、基本的なサンプルプログラムを作成しました。
#include <stdlib.h>
#include <plib.h>
char x;
char y;
char main(void)
{
Nop();
char *pLocation = (char *)malloc(16);
if(pLocation == 0x00)
{
return 0;
}
for(x = 0;x<=7;x++)
{
*pLocation = x;
pLocation++;
}
while(1)
{
Nop();
}
}
問題:
- ポインターが
malloc
呼び出し行に到達すると、の値はpLocation
0x00に強制されます。これは、ヒープからポインター情報を渡せなかったことを意味します。 x
ポインタがポインタの場所に値を割り当てるようpLocation
になると、バス例外が発生し、 「未実装のRAMメモリアクセス」と表示されます。これは、0x00に書き込もうとしたためだと思います。
コードで何か間違ったことをしていますか?
追加情報:
- すでに16バイトのヒープを割り当てています。
- サイズ2のメモリリクエストでも同じエラーが発生します。
- MPLABSIMデバッガを使用しています。
- MPLABバージョン8.87.00.00。
- XC32コンパイラを使用してビルドします。