#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "mystuff.h"
typedef struct Node
{
int size;
int status;
struct Node *next;
struct Node *previous;
} Node;
Node *endNode;
Node *rootNode;
void *my_foo(int size)
{
Node *theNode;
void *ptr;
if (rootNode->next == NULL)
{
theNode->status = 1;
...
它在“rootNode-&gt; == NULL”处进行了段错误,但是如果我将其更改为“rootNode == NULL”,那么当它点击“theNode-&gt; status = 1”并且将节点和rootNode声明为NULL时会出现段错误没有帮助。
答案 0 :(得分:1)
...并将theNode和rootNode声明为
NULL
没有帮助。
解除引用NULL
(通常)将导致段错误。在你修改它们之前,你必须将它们设置为更有用的东西(比如分配的结构)!
答案 1 :(得分:0)
我没有看到rootNode被分配,因此它驻留在静态空间中,因此它保持nullptr常量。您正在使用 - &gt;取消引用它操作员,所以无法完成。 首先要指出一些对象!
答案 2 :(得分:0)
取消引用NULL指针将导致分段错误。
只能假设rootNode
为NULL,因为当您将条件更改为if(rootNode == NULL)
时,它将进入代码块。人们会进一步假设这是因为它从未被分配过。
此外,您明确从未将theNode
设置为指向任何内容,因此行theNode->status
将尝试取消引用theNode
,其指向......谁知道什么。
解决方案:为变量指定值。
答案 3 :(得分:0)
在使用字段之前是否为rootNode分配内存(我的意思是rootNode-&gt;下一步操作)? 如果没有,请使用malloc,例如: rootNode =(struct Node *)malloc(sizeof(Node))。 似乎你在做双链表,也可能是一个好主意预定义struct Node * next = NULL;