gpt4 book ai didi

成功分配指针后,无法将值分配给结构指针

转载 作者:行者123 更新时间:2023-11-30 16:12:45 24 4
gpt4 key购买 nike

我正在编写一个早期的内核堆,以在最终堆运行之前管理一些内存分配。当我将一个地址(不被其他任何东西使用)分配给我的结构指针时,它可以工作,当我尝试向结构成员分配值时,问题就出现了。

在回答之前,请记住我没有任何可以使用的 C 库。通过远程使用QEMU和gdb进行调试。

//The struct
typedef struct mem_block{
mblock_t *prev;
boolean used;
size_t size;
mblock_t *next;
} mblock_t;

//The file-local pointer(before its init)
mblock_t *eheap=NULL;


//Function that assigns the values
mblock_t *init_early_heap(address_t start, size_t size){
if(eheap==NULL){
if(size < sizeof(mblock_t)){
PANIC("Available memory below EHEAP requirement");
}
eheap = (mblock_t*)HEAP_START_ADDRESS;
eheap->prev = NULL;
eheap->next = NULL;
eheap->size = (size_t)(size - sizeof(mblock_t));
eheap->used = false;
print("\nCreated Early Heap at ");
print_hex_long(eheap);
print("\nSize in bytes: ");
print(itos(eheap->size));NL;
}
return eheap;
}

函数返回后,我得到一个指向地址 0xC0000000 的指针和未触及的成员,因为 eheap->size 为 0(函数中的 size 参数不为 0)。

最佳答案

发现问题:无法读取 QEMU 中的整个地址空间(A20 上),但可以在低位地址上正常工作。上面的 C 代码是正确的,现在问题仍然是 QEMU/GRUB。

关于成功分配指针后,无法将值分配给结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com