gpt4 book ai didi

将 char arr[64] 复制到 char arr[] 会导致段错误吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:17 25 4
gpt4 key购买 nike

typedef struct {
int num;
char arr[64];
} A;

typedef struct {
int num;
char arr[];
} B;

我声明了 A* a; 然后将一些数据放入其中。现在我想将它转换为 B*

A* a;
a->num = 1;
strcpy(a->arr, "Hi");

B* b = (B*)a;

这样对吗?
我有时(不总是)遇到段错误,我想知道这是否是问题的原因。

即使在转换后我没有尝试访问 char arr[],我还是遇到了段错误。

最佳答案

这里定义了一个指针变量

A* a;

它没有明确指向任何东西,指针未初始化。

这会访问它指向的任何内容

a->num = 1;
strcpy(a->arr, "Hi");

如果不事先为指针分配任何内容(例如使用 malloc()),这将要求段错误作为它调用的未定义行为的一个可能后果。

关于将 char arr[64] 复制到 char arr[] 会导致段错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51606273/

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