C语言中的内存分配,堆中的链表
我正在构建一个单链表,并试图像这样为它分配内存C语言中的内存分配,堆中的链表,c,malloc,C,Malloc,我正在构建一个单链表,并试图像这样为它分配内存 struct node *new_node = (node*) malloc(sizeof(node) * 5); 所以有足够的内存容纳5个节点。现在通过以下方式访问第一个节点: new_node->data = new_data; 很好,但是当我将另一个节点链接到new_node->next时,我忘记了如何说新节点是我已经分配的内存的一部分。我不希望每次我想要一个新节点时都进行malloc,因为为了我正在处理的任务,我们希望尽可能不频繁
struct node *new_node = (node*) malloc(sizeof(node) * 5);
所以有足够的内存容纳5个节点。现在通过以下方式访问第一个节点:
new_node->data = new_data;
很好,但是当我将另一个节点链接到new_node->next时,我忘记了如何说新节点是我已经分配的内存的一部分。我不希望每次我想要一个新节点时都进行malloc,因为为了我正在处理的任务,我们希望尽可能不频繁地进行malloc
非常感谢您提供的任何线索,到目前为止,我还没有在广域网上找到我需要的东西
约翰 您搞错了,您不需要为五个节点分配空间,而是用第一个节点指向它们
struct node *head = malloc(sizeof(struct node));
if (head == NULL)
return errorHandler();
head->next = malloc(sizeof(struct node));
.
.
.
等等
我在那里做的是为一个节点分配空间,当我需要一个新节点时,我为它分配空间,并用struct节点的下一个字段指向它。当为任何新元素单独分配内存时,非常简化的解决方案是: 包括 包括 结构节点 { int data;//一些数据,而不是到下一个元素的链接 结构节点*下一步; }; int main { 结构节点*head=NULL// 结构节点*tail=NULL// //创建第一个节点 head=节点*mallocsizeofnode; ifhead!=NULL { 尾=头; tail->next=NULL; //在这里填写数据 } //再创造 福林系数i=1;i<5;i++ { tail->next=node*mallocsizeofnode;//新建 iftail->next!=空 { tail=tail->next;//将tail移动到下一个 tail->next=NULL; //在这里填写数据 } } } etc。
Node* five = malloc( 5 * siozeof(Node) );
int nxt = 0;
Node* p = &five[nxt++];
p->next = &five[nxt++];