providerName); 其中结构成员(来自外部库)是: char providerName[256]; 导致核心转储-6ren">
gpt4 book ai didi

c - 打印 char[] 核心转储 C

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

我正在尝试:

printf("Provider: %s\n", Props->providerName);

其中结构成员(来自外部库)是:

char providerName[256];

导致核心转储,gdb 输出为:

Program terminated with signal 11, Segmentation fault.
[New process 73950 ]
#0 0xfee22290 in strlen () from /lib/libc.so.1

我猜 char[] 可能不是 null 终止的,但最好的解决方案是什么?

干杯!


编辑:我正在使用的结构来自外部库,并且似乎不为空(我可以成功打印它的另一个成员 char alias[256];

最佳答案

在将 %s 与 printf 一起使用时,尽可能使用最大宽度指示器:

printf("Provider: %.255s\n", Props->providerName);

如果您仍然遇到段错误,并且 Props 不是 NULL,则您的 header 和库二进制文件之间可能存在冲突。假设您有新版本的 header 定义:

struct Thing {
int foo[256];
int bar[256];
int baz[256];
};

但库二进制文件已过时,使用以下定义:

struct Thing {
int foo[256];
int bar[256];
};

如果您现在尝试访问 baz,您将遇到段错误,即使其他成员工作正常也是如此。

(编辑:将“如果出现段错误”中的文本添加到答案结尾)

关于c - 打印 char[] 核心转储 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11327638/

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