gpt4 book ai didi

c - struct 中的 struct timespec

转载 作者:行者123 更新时间:2023-11-30 18:55:59 25 4
gpt4 key购买 nike

以下是重现该问题的一个最小示例。对我来说,这段代码看起来很无辜。我怀疑 struct timespc 背后有一些魔法;但是,我找不到任何可以解释它崩溃原因的内容。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <time.h>

typedef struct _task
{
int id;
int deadline;
struct timespec processed_at;
int process_time;
} task;

int main(int argc, char *argv[])
{
task *t = malloc(sizeof t);
t->process_time = 3;
free(t);
return 0;
}

最佳答案

所有现有的答案和评论都指出了错误所在的关键部分。然而,sizeof 的某些用法是不正确的,所以我回答这个问题。

我看了这个SO不小心,并假设OP提供了正确的语法。既然他/她正在谈论为什么要使用样式,我希望两者都是正确的。

至于带()还是不带(),根据cppreference,类型需要(),但一元表达式不需要。因此,sizeof task 不正确(我在 clang 和 gcc 上收到错误);相反,它应该是 sizeof(task)sizeof *t

task *t = malloc(sizeof *t); // right
task *t = malloc(sizeof(task)); // right
task *t = malloc(sizeof task); // wrong both on gcc and clang
task *t = malloc(sizeof t); // syntactically right, but it's not what you want

关于c - struct 中的 struct timespec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25816580/

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