无法在c中使用堆的基地址

时间:2019-02-09 07:07:11

标签: c pointers memory-management arm heap-memory

我已经从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;
            }

0 个答案:

没有答案