gpt4 book ai didi

c - 使用 char 指针退出函数后出现段错误

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

<分区>

我正在使用 C 编写带有用户界面的代码,但我遇到了字符指针问题。我团队的另一个人用这样的东西做了一个算法:

typedef struct
int index;
char * buffer;
//...another fields
} ui_cfg;

int ui_Function (ui_cfg *cfg)
{
char localBuffer[100];
cfg->buffer = localBuffer;

printf("\n[1]cfg->buffer %p", cfg->buffer);
printf("\n[2]localBuffer %p", localBuffer);

Adapter(cfg->buffer);
printf("\n[3]localBuffer %p", localBuffer);
printf("\n[4]cfg->buffer %p", cfg->buffer);

//...irrelevant code
}

这是一个非常非常简化的代码版本,但它具有重要的部分。在实际代码中,Adapter 是在辅助函数中使用函数指针调用的。适配器函数做这样的事情:

int Adapter (char * buffer)
{
int idx;
idx = sprintf (buffer, "Test string");

return idx;
}

我的问题是下一个。当我运行代码时,它在 printf("\n[4]cfg->buffer %p", cfg->buffer); 指令中抛出 Segmentation Fault。但是,另一个 printf 工作正常并显示相同的内存方向。我不明白为什么此时代码会崩溃。可能是什么问题?

详细信息:此代码在两种不同的体系结构上使用 arm-brcm-linux-gnueabi-gcc 和 mipsel-linux-uclibc-gcc 进行编译。在 ARM 上,此代码工作正常并且 cfg-buffer 包含“测试字符串”。在 MIPSEL 上,代码抛出段错误。

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