gpt4 book ai didi

c - strcpy(m+1,m) 的不可预测行为

转载 作者:行者123 更新时间:2023-11-30 21:41:50 25 4
gpt4 key购买 nike

我正在处理一个有关段错误的示例:

char m[10]="dog";
strcpy(m+1,m);

在我的 centOs 机器中,结果符合预期:段错误。但在 Ubuntu 上什么也没有发生。然后我添加一个 printf("%s",m);到 ubuntu 上的代码,令人惊讶的是我得到了“ddog”结果。我使用的是 GCC,ubuntu 版本是最新的。谁能告诉我为什么结果不同。我还在 raspbian 上检查过,也收到了段错误。

谢谢

最佳答案

这会导致undefined behaviourstrcpy 只能在不重叠的区域之间使用。

要修复此代码,您可以编写:

memmove(m+1, m, strlen(m) + 1);

关于c - strcpy(m+1,m) 的不可预测行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37289389/

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