我正在编写软件来模拟“首次适应”内存分配方案。
基本上,我会分配一个大的X兆字节的内存块,并在根据该方案请求块时将其细分为块。
我使用一个称为“节点”的链表作为每个内存块的标题(这样我们可以找到下一个块而不必费力循环遍历每个地址值)。
但是这最后一行返回:
基本上,我会分配一个大的X兆字节的内存块,并在根据该方案请求块时将其细分为块。
我使用一个称为“节点”的链表作为每个内存块的标题(这样我们可以找到下一个块而不必费力循环遍历每个地址值)。
head_ptr = (char*) malloc(total_size + sizeof(node));
if(head_ptr == NULL) return -1; // Malloc Error .. :-(
node* head_node = new node; // Build block header
head_node->next = NULL;
head_node->previous = NULL;
// Header points to next block (which doesn't exist yet)
memset(head_ptr,head_node, sizeof(node));
但是这最后一行返回:
error: invalid conversion from 'node*' to 'int'
我理解为什么这是无效的,但是我如何将我的节点放入新分配的内存指针位置呢?