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中没有“实例化”,因此进行了相应的编辑。