当我在keil模拟器中运行代码时,变量__heap_base(这是启动文件中的标签)不包含堆基(我发现堆基为0x20000000),但始终显示为0x00000000。如何使__heap_base保持正确的值,以便我可以增加和减少堆基数。
尝试了一些方法后,我发现即使将地址0x20000000作为无符号的32位整数存储在变量中,我也无法访问内存位置。
#include <stdint.h>
extern uint32_t __heap_base;
uint32_t memallocate(int size)
{
uint32_t temp=__heap_base;
__heap_base=__heap_base+size;
return temp;
}
int maina()
{
int *p=(int*)memallocate(sizeof(int));
*p=5;
return 0;
}
内存地址0x20000000应该保持值为5