Метка, экспортированная из файла сборки, недоступна в c

Когда я запускаю свой код в симуляторе кеила, переменная __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

0 ответов

Другие вопросы по тегам