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