首页 > 解决方案 > 用 calloc 创建的以空字符结尾的字符串?

问题描述

我想使用 calloc 为字符串分配内存,我知道 calloc 用 0 填充整个分配的内存,但我还发现它们在某些情况下与 \0 不同。整个讨论对于新手(比如我自己)来说有点令人困惑,所以我想知道是否有人可以给我最终答案,如果我使用 alloc 来初始化字符串,我是否必须手动将最后一个字符设置为“\0”或不?

标签: cstringpointerscallocnul

解决方案


0填充分配的内存的整数值和与整数值相同的calloc文字字符之间没有区别。'\0'0

因此,如果您将最多字符写入分配给n-1的字符的内存块,您将始终拥有一个有效的以 0 结尾的字符串。ncalloc


推荐阅读