使用 calloc 创建的以空字符结尾的字符串?
Null-terminated strings created with calloc?
我想使用 calloc 为字符串分配内存,我知道 calloc 将整个分配的内存填充为 0,但我也发现它们在某些情况下与 \0 不同。
整个讨论对于新手(比如我自己)来说有点混乱,所以我想知道是否有人可以给我最终答案,如果我使用 alloc 来初始化一个字符串,我是否必须手动将最后一个字符设置为“\0”还是不?
整数值0
和calloc
填满分配的内存之间没有区别,文字字符'[=12=]'
与整数值[=10=相同].
因此,如果您将最多 n-1
个字符写入分配给 calloc
的 n
个字符的内存块,您将始终拥有一个有效的以 0 结尾的字符串。
我想使用 calloc 为字符串分配内存,我知道 calloc 将整个分配的内存填充为 0,但我也发现它们在某些情况下与 \0 不同。 整个讨论对于新手(比如我自己)来说有点混乱,所以我想知道是否有人可以给我最终答案,如果我使用 alloc 来初始化一个字符串,我是否必须手动将最后一个字符设置为“\0”还是不?
整数值0
和calloc
填满分配的内存之间没有区别,文字字符'[=12=]'
与整数值[=10=相同].
因此,如果您将最多 n-1
个字符写入分配给 calloc
的 n
个字符的内存块,您将始终拥有一个有效的以 0 结尾的字符串。