我正在创建一个简单的单链接列表。在函数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)
答案 0 :(得分:1)
问题出在这里
if (tmplist = NULL)
在分配后立即将tmplist设置为NULL。这未通过if
测试,因此未输入该块。 if
之后的下一行立即崩溃。
应该阅读
if (tmplist == NULL)
你应该收到有关此事的警告。始终在打开警告的情况下进行编译。