c-指向结构和访问成员的无效指针



我在摆弄和学习无效指针和链表,我认为我可能在概念和应用方面有点错误。

目前,我有一个空指针,它指向内存中结构的地址。然后,我试图通过将void指针强制转换为该结构来访问该结构。然而,我并没有得到期望的值,只有0

代码如下。

void *data = ListGetItemAtIndex(freeList, i); // returns void *
memoryBlock *block = (memoryBlock *) data;
printf("%ldnn", block->startAddress);

结构体:

typedef struct
{
size_t startAddress;
size_t memory;
} memoryBlock;

添加结构时的地址:

0x5593c4812720

无效地址*:

0x5593c4812720

核心问题是,如何使用这个void指针来访问结构中的数据。

请求的示例:

块创建

static memoryBlock* CreateMemoryBlockPointer(size_t startAdress, size_t size)
{
memoryBlock block;
block.startAddress = startAdress;
block.memory = size;
return malloc(sizeof(block));
}

任务:

memoryBlock *ptr = CreateMemoryBlockPointer(StartAddress, size);
// Add initial 1st element
ListAddTail(freeList, ptr);

原型:

int ListAddTail(linkedList *list, void* data)

添加到列表

el->data = data;
el->next = NULL;

已解决,请参阅:

首先分配内存,然后写入内存,例如:

memoryBlock *block = malloc(sizeof(*block));
block->startAddress = startAddress;

等等。然后返回块;在功能的末尾–

  • @邪恶羊

相关内容

  • 没有找到相关文章

最新更新