gpt4 book ai didi

c - strcpy 在 ios7 上表现不同

转载 作者:太空狗 更新时间:2023-10-29 16:07:49 24 4
gpt4 key购买 nike

IOS7 似乎带有字符串 strcpy 的新实现(可能是优化)。在我能够从数组的任何位置复制字符串之前,但现在如果我从 (i % 4 != 0) 的任何位置开始复制,它将崩溃。

为了展示这一点,我在 iOS6 和 7 中都运行了这段代码,它在 7 上使应用程序崩溃了:

  char *x = malloc(1024);
strcpy(x, "hello world");
char *x2 = x + 1;
strcpy(x, x2);

我做错了什么?

最佳答案

C11 标准在 §7.24.2.3 中说:

The strcpy function copies the string pointed to by s2 (including the terminating 
null character) into the array pointed to by s1. If copying takes place between
objects that overlap, the behavior is undefined.

未定义的行为意味着任何事情都可能发生——代码可以完美运行,也可能崩溃,或者今天运行良好,但第二天就崩溃了。由于 xx2 在您的代码中重叠,它在 iOS 6 中工作的事实只是运气。

关于c - strcpy 在 ios7 上表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18826047/

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