返回首页

在这个方案中,我有段故障错误,任何一个点在哪里,我是在这个程序的内存分配错误。

//stack program

#include<stdio.h>

#include<conio.h>

 

struct node

{

       int data;

       struct node *next;   //this variable is refer the same structure

}*top=NULL;

int main()

{

//     clrscr();

     insert(34);   //insert node

     insert(20);

 

     display();

//     getch();

     return 0;

}

     // insert new stack value

insert(int val)

     {

                struct node *temp = (struct node *)malloc(sizeof(struct node));

                temp = top;

                temp->data = val;

                temp->next = top;

                top = temp;

                }

     //display the stack

display()

     {

              struct node *temp = top;

              while(temp)

              {

                         printf("%d",temp->data);

                         temp = temp->next;

                         }

                         }

回答

评论会员:游客 时间:2012/02/06
曼弗雷德・R.Bihy:你在开始初始化一个节点变量的指针。堪称顶级为空然后在插入方法,你与你分配一个适当大小的内存块指针初始化变量temp(一个节点的指针)。直接后,你覆盖,temp变量与变量的顶端(这仍然是空的)的内容。在此之后,您尝试访问节点结构中的元素。这说明你的痛苦。所有您需要做的是一起离开了所有的语句:{C}最好的问候,mdash;如MRB
伟业奥尔:你为什么分配权后,你刚刚分配临时顶部温度?关回来,你装空,你实际上已经有了一个有效的堆内存地址。

编辑:
还注意到,在您的小程序,你永远不会释放内存。你也许应该这样做,除非你希望内存泄漏:查克・奥图尔
评论会员:游客 时间:2012/02/06
{的C2}因此,分配这种新的内存闪亮块和它的地址存放在"临时"然后你立即消灭'顶'的指针,它初始化为NULL。臂