gpt4 book ai didi

c - strcat 和静态分配的字符数组会发生什么?

转载 作者:行者123 更新时间:2023-12-04 06:10:28 27 4
gpt4 key购买 nike

我在一些遗留代码中发现了这一点。

static char title1[] = "SUMMARY REPORT";
static char title2[] = "PERIOD: ";

...

strcat(title2, "10/10/2011");

此 strcat 操作导致 title1 被部分日期字符串覆盖。我能够在一个小程序中重现这一点,但不能使用静态数组。我查看了遗留代码中的内存位置,title2 缓冲区位于 title1 之前。修复很简单,我只是在 title2 中添加了一个长度(这将 title1 的开头在内存中推得更远)以保存整个日期。为什么在内存中 title2 在 title1 后面?这是在 SPARC 上,顺便说一句。

最佳答案

Why is title2 behind title1 in memory?



为什么不?该标准不保证对象的放置位置。您显示的代码从根本上是错误的。 strcat目标应该包含一个 C 字符串,并且足够大以包含连接的结果字符串。

关于c - strcat 和静态分配的字符数组会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7851367/

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