gpt4 book ai didi

c++ - 将指针插入原始内存

转载 作者:行者123 更新时间:2023-11-28 05:52:57 29 4
gpt4 key购买 nike

我正在为一项学校作业开发内存管理器。分配的要点是分配一个大字符数组,然后将该数组拆分为客户端可以“分配”或“释放”的 block 。

部分分配涉及标题 block ,即每个 block 之前关于该 block 的一小块信息。它基本上跟踪有关 block 的信息。我们需要实现的一种 header block 类型是外部 header block 。对于外部头 block ,我们不需要将头数据存储在 block 本身中,而是需要使用头数据动态分配一个结构体。具有动态分配标签的结构使问题进一步复杂化。

我的老师的驱动程序在尝试访问数据时变得空,当我删除数据时,它抛出访问冲突,可能是因为我没有将数据正确存储在原始内存中。

本质上,问题是:我需要使用动态分配的字符串动态分配结构,然后将指向该结构的指针放在原始内存块的前 8 个字节中。

这是我目前的实现

char* newString = new char[strlen(inputString)];
//Copy the label passed into this fx into the allocated memory
strcpy(newString, inputString);

//Allocate and initalize the struct
headerStruct* pHeader = new headerStruct;
pHeader->active = true;
pHeader->string = newString;

//Save the first 8 bytes of my block of memory as a headerStruct*
headerStruct* hAddress = reinterpret_cast<headerStruct(*)>(address);
//Make the first 8 bytes point to the recently allocated struct
hAddress = pHeader;

最佳答案

如果我没看错,分配中的 headerLoc 需要是指向指针的指针,因为您需要将指向内存块的指针存储在以下地址:

MemBlockInfo** headerLoc = reinterpret_cast<MemBlockInfo **>(address);

然后正确地取消引用它以将 header 存储在那里。

关于c++ - 将指针插入原始内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833841/

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