特定地址的动态结构数组
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];
}
我正在尝试在内存中的特定地址动态分配以下结构的数组。我使用指针 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];
}