【发布时间】:2018-09-24 16:36:31
【问题描述】:
我的代码有问题。我应该有4个文件。 list.h、listAdders.c、listMovers.c 和 listRemovers.c。
我应该为大小为 minList 和 minNodes 的列表和节点静态声明 2 个内存块。而且 Malloc() 只允许在运行时使用(这意味着我不会将内存分配为每个列表或每个节点)。
listRemovers.c 和 listMovers.c 将需要访问我使用 malloc() 为我的列表和节点分配的内存块。
没有 init() 函数,而且我不知道如何 malloc() 一个将保存列表和节点的全局变量数组。
以防我的问题不清楚。如何为我的列表和节点结构分配初始内存块?这样当我创建列表或添加节点时,它们就会存储在我分配的内存中。
这是我所拥有的:
list.h
#ifndef __LIST__
#define __LIST__
#define MIN_LISTS 3
#define MIN_NODES 30
typedef struct NODE{
struct NODE* next;
struct NODE* prev;
} NODE;
typedef struct LIST{
struct NODE* head;
struct NODE* cursor;
int size;
} LIST;
extern NODE *node_block;
extern LIST *list_block;
LIST *ListCreate();
int ListAdd(LIST *list, void* item);
#endif // __LIST__
listAdders.c
#include "list.h"
#include <stdlib.h>
#include <stdio.h>
NODE *node_block = malloc(MIN_NODES * sizeof(struct NODE));
LIST *list_block = malloc(MIN_LISTS * sizeof(struct LIST));
LIST *ListCreate()
{
}
int ListAdd(LIST * list, void* item)
{
}
【问题讨论】:
-
列表作为参数传递给这些函数中的任何一个。为什么你需要它全球?此外,我认为没有理由为 static 变量使用 dynamic 分配。
-
双下划线不是为实现保留的吗?
标签: c malloc doubly-linked-list