[英]C Segmentation fault: 11 error
我对C相当./test
,尽管可以编译此代码(使用gcc -Wall -o test test.c
),但是运行./test
只会导致输出dbecher$: Segmentation fault: 11
。 有人知道是什么原因造成的吗?
好吧,我知道不使用指针而是可以分配一个普通的结构,但是我正在使用它来测试指针的某些行为。 所以我想继续为该结构使用指针变量。
这里的代码片段:
#include <stdio.h>
typedef struct HumidityMessage {
int nodeId;
int sequenceNumber;
int humidity;
} HumidityMessage;
HumidityMessage* packet;
int main() {
packet->nodeId = 0;
packet->sequenceNumber = 1;
packet->humidity = 3;
printf("This is the address of packet: %d", packet->nodeId);
}
分段错误是由无效的内存访问引起的。 在这种情况下,您会得到它,因为您在不首先为其分配空间的情况下就引用了数据包指针。
HumidityMessage* packet;
什么都没有指向。 初始化它:
HumidityMessage* packet = malloc(sizeof(HumidityMessage));
不要使用指针。 使用HumidityMessage packet;
代替。
当前, packet
已初始化为nullptr
,取消引用它是非法的。
另外,您可以保留指针并在需要之前为其分配内存,但是对于全局变量来说,找到相应的free
是个难题。
使用c内置的malloc函数将内存分配给数据包指针。 Packet =(HumidityMessage *)malloc((HumidityMessage)的大小); 或者,您可以直接采用结构的变量并分配值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.