gpt4 book ai didi

c - C 处理大型文件时出现段错误

转载 作者:行者123 更新时间:2023-11-30 20:46:44 28 4
gpt4 key购买 nike

我编写了一个程序来处理大型文件(如图所示)。为此我使用了链表。当我在一个小文件上运行它时,一切都很好并且结果是正确的。当我在大文件上运行它时,出现了一个问题,如下图所示:

Segmentation fault error

在出现错误之前,temp变量没问题,并且在每次迭代时,它都有正确的值。但是,当错误发生时,它是 0x0 !

My code

造成这个问题的主要原因是什么?

我使用它的结构是:

struct path {
int node;
struct path *next;
};

/* Head and Tail for Paths List */
struct path *pathHead = NULL;
struct path *pathTail = NULL;

/* Path List structure */
struct path_list {
struct path *path_head;
struct path *path_tail;
struct path_list *next;
};

/* Head and Tail for Path List Linked Lists */
struct path_list *path_list_head = NULL;
struct path_list *path_list_tail = NULL;

最佳答案

这意味着 malloc()失败并返回 NULL .发生这种情况可能是因为您内存不足

<小时/>

来自 malloc() 's man pages :

The malloc() and calloc() functions return a pointer to the allocated memory that is suitably aligned for any kind of variable. On error, these functions return NULL.

您可以查看malloc()的返回值并处理这种情况,以便您的程序不会出现段错误:

if ((temp = malloc(sizeof(struct path))) == NULL)
{
printf("%s", "malloc() failed!");
// Clean exit?
}

您还可以使用errno用于错误处理。

<小时/>

关于c - C 处理大型文件时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49648018/

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