【发布时间】:2020-04-03 16:23:40
【问题描述】:
我注意到,通常当我将字符数组设置为所需的确切大小时,存储在该数组中的数据会损坏。为什么会发生这种情况,我应该为数组分配多少空间而不是存储数据所需的最大大小?
【问题讨论】:
-
“我注意到,通常当我将字符数组设置为所需的确切大小时,存储在该数组中的数据会损坏”——这不应该发生——除非你错过了空间对于空终止符,在这种情况下,您的数组不会损坏,但您的数组不是它需要的确切大小(它的 1 个元素太小了!)。
-
C 中的字符串以空值结尾。
strlen返回字符数。+1占最后一个零字节。 en.wikipedia.org/wiki/C_string_handling -
@Dai 您的评论没有意义,因为在不知道发生损坏的上下文的情况下,您无话可说。并且问题的作者没有提供任何相关代码。这个问题应该结束了。
-
占用过多的内存不是一个好主意,这会使程序变慢。
-
“为什么会这样” --> 因为您对“它需要的确切大小”的理解是不正确的。通过显示代码和您认为它是确切大小的推理,这可能是一个好问题。