特定地址的动态结构数组

Dynamic Struct Array at Specific Address

我正在尝试在内存中的特定地址动态分配以下结构的数组。我使用指针 struct page_frame* memBlocks 作为数组的开始,但是在 for 循环中每次使用 memBlocks[i] 访问下一个元素只移动 8 个字节。我在 gdb 中检查了我的结构的大小,它显示了预期的 16 个字节,那么为什么对指针的访问以这种方式表现?

struct page_frame{
struct page_frame* next; //Next node of linked list
int used;

};

struct page_frame* memBlocks;

memBlocks = (struct page_frame*)0xffffffff80000000 + physFree;
int indices = ((int)physEnd/4096)


for(int i = 0; i < indices; i++)
{
    struct page_frame temp;
    temp.used = 3;
    temp.next = (struct page_frame*)&memBlocks[i+1];
    memBlocks[i] = temp;
}

我通过将每个元素设置为 temp 来覆盖我的结构。我能够通过以下方式修复它。

struct page_frame* memBlocks = (struct page_frame*)0xffffffff80000000 + physFree;

int indices = ((int)physEnd/4096);
//struct page_frame arr[physEnd];


for(int i = 0; i < indices; i++)
{

    memBlocks[i].used = 1;
    memBlocks[i].next = &memBlocks[i+1];

}