我在 MPLAB 上编码,使用 XC32 编译器,并试图掌握使用动态内存的窍门,所以我创建了一个基本的示例程序:
#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
我得到一个总线异常,说Unimplemented RAM memory access。我怀疑这是因为我试图写入 0x00。
我在代码中做错了吗?
附加信息:
- 我已经分配了一个 16 字节的堆。
- 对于偶数大小为 2 的内存请求,我得到相同的错误。
- 我正在使用 MPLAB SIM 调试器。
- MPLAB 版本 8.87.00.00。
- 使用 XC32 编译器构建。