C 结构|分配结构对象|分段错误

C 结构|分配结构对象|分段错误,c,linux,pointers,struct,C,Linux,Pointers,Struct,我定义了一个struct类型,如下所示: typedef struct { int obs_flag; double obs_timestamp; int event_mask; char *event_name; char *filedir; } structdata; int observer_flag = 1; double ctime = 2309212380.323100; struct inotify_event* event = (stru

我定义了一个
struct
类型,如下所示:

typedef struct {
    int obs_flag;
    double obs_timestamp;
    int event_mask;
    char *event_name;
    char *filedir;
} structdata;
int observer_flag = 1;
double ctime = 2309212380.323100;
struct inotify_event* event = (struct inotify_event*)(buffer + bytesProcessed);

obs_data->obs_flag = observer_flag;
obs_data->obs_timestamp = ctime;
obs_data->event_mask = event->mask;
obs_data->event_name = event->name;
obs_data->filedir = "./myDir/";
其中我有一个名为
obs\u data
的指针:

structdata *obs_data;
然后,我想分配
obs\u数据的每个对象,如下所示:

typedef struct {
    int obs_flag;
    double obs_timestamp;
    int event_mask;
    char *event_name;
    char *filedir;
} structdata;
int observer_flag = 1;
double ctime = 2309212380.323100;
struct inotify_event* event = (struct inotify_event*)(buffer + bytesProcessed);

obs_data->obs_flag = observer_flag;
obs_data->obs_timestamp = ctime;
obs_data->event_mask = event->mask;
obs_data->event_name = event->name;
obs_data->filedir = "./myDir/";
在上面,
event
是来自
inotify
的结构,它捕获与Linux中文件或目录更改相关的事件

当我在程序中运行上述代码块时,我遇到了
分段错误(内核转储)


我不是一个专业的口吃和指针。非常感谢您的帮助。

您的
obs\u数据
只是一个指针!!它不是
structdata
的实例。如果希望它是指针,则需要
malloc
内存来保存结构

因此,在使用
obs_data
之前,您需要以下代码:

obs_data = malloc(sizeof *obs_data);  // Allocate memory for 1 instance of structdata
if (obs_data == NULL)
{
    // allocation failed
    exit(1);
}
// Now you can assign values like
obs_data->obs_flag = observer_flag;
...
...
一旦你使用完,记得像这样释放内存

free(obs_data);

双ctime=2309212380.323100
此处缺少分号。还有什么是缓冲区?请发布一个。你是如何初始化指针
obs_data
本身的,而不是它指向的是什么?`我在哪里实例化,“observer data”不,你不是。您仍然需要为它分配内存。C.I中没有“实例化”,因此进行了相应的编辑。