gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:24:47 24 4
gpt4 key购买 nike

我正在创建一个简单的单链接列表。在函数 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.

列表.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)

结构.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)

最佳答案

问题就在这里

if (tmplist = NULL)

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

应该阅读

if (tmplist == NULL)

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

关于c - 在 C 中创建列表时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42098259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com