我已经从keil的启动文件中导出了__heap_base标签(__heap_base是指向堆开始的标签)。在一个将__heap_base声明为extern的c文件中,并将__heap_base的地址分配给一个void指针,但是此void指针始终具有0x00000000的值,因此不能用于指向堆的基数。 所以我的间接问题是如何在指针中存储堆的基地址 并将其用作我可以声明和定义的内存管理功能的参数
#include <stdint.h>
extern uint32_t __heap_base;
void* original_heap_base=&__heap_base;
/*void get_heap_base()
{
original_heap_base=&__heap_base;
}*/
void* mem_init()
{
void *temp=original_heap_base;
original_heap_base+=4;
return temp;
}
int main()
{
int *p=(int*)mem_init();
*p=5;
return 0;
}