在C中创建列表时程序崩溃

时间:2017-02-07 19:25:34

标签: c

我正在创建一个简单的单链接列表。在函数listIn()中,直到malloc()一切正常,但在执行malloc()之后我的程序崩溃了。我无法理解为什么? 它给出了如下输出:

3.055秒后退出流程,返回值为3221225477 按任意键继续 。 。

代码:

main.c

//main 
#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#include"structure.h"
#include"List.h"

int main ()
{
    listIn(1);
    displ();
}
//end of main function.

List.h

//custom header file List.h (begin)

List *lstart = NULL;
void listIn(int hcode);
size_t listIsEmpty();
void dispList();

//function definition queueIn() to insert element into queue.

void listIn(int hcode)
{
    tmplist = (List *) malloc (sizeof ( List ) );
    if (tmplist = NULL)
    {
        puts("Memory Not available");
        return;
    }
    tmplist->lcode = hcode;
    tmplist->llink = lstart;
    lstart = tmplist;   
}

//end of function queueIn()

//function declaration displ() used to print queue

void displ()
{
    if( listIsEmpty() )
    {
        puts("List is Empty");
    }
    else
    {
        List *ptr;
        ptr = lstart;
        while(ptr != NULL)
        {
            printf("%d\n", ptr->lcode);
            ptr = ptr->llink; 
        }
    }
}

// function displ() end


// function declaration listIsEmpty() to check the status of queue.

size_t listIsEmpty()
{
    if(lstart == NULL)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

// custom header file List.h(end)

structure.h

//custom header file structure.h(begin)
// definition of all the structures
#include<stdbool.h>//for boolean data type.
#ifndef STRUCTURE_H_
#define STRUCTURE_H_
#include<stdbool.h>

typedef struct lnode
{
    int lcode;
    struct lnode *llink; 
}List;
List *tmplist;
#endif

// custom header file structure.h(end)

1 个答案:

答案 0 :(得分:1)

问题出在这里

if (tmplist = NULL)

在分配后立即将tmplist设置为NULL。这未通过if测试,因此未输入该块。 if之后的下一行立即崩溃。

应该阅读

if (tmplist == NULL)

你应该收到有关此事的警告。始终在打开警告的情况下进行编译。