C - `0` 使用 malloc 出现特殊字符

标签 c malloc concatenation lldb

我在串联期间使用 malloc 时遇到一些问题。似乎当我 malloc 指针时,会自动添加一个字符。这个附加在已经工作的许多循环之后,我在之前设置的 2 行空指针上使用 malloc,我只使用存在的数字,cur_len, sub_len

看似正常的想法,却突然自动弹出了这个特殊字符。实际上,(对我来说)它在打印时似乎显示为单个字符(见图2),但是当我通过lldb检查new_str值时,'0'(带有 block 引号)是三个字符...

lldb representation 打印字符时: enter image description here

如果有人能给我一个线索,它尝试了一些东西,暂时无法理解。谢谢你,我希望我说得清楚了。

编辑:
我的错误 --> 我没有覆盖 malloc 从第一个索引返回的指针,并且因为 malloc 可能会在内存池中提供一些不“干净”的内存,所以您(必须?)覆盖来自第一个索引的新指针索引0。(实际上我认为不这样做是没有意义的。)

最佳答案

malloc() 不会初始化您分配的内存空间,它通常会包含以前使用该内存空间的垃圾。

如果您想强制分配的内存为零,请改用calloc()。注意calloc()takes different parameters .

关于C - `0` 使用 malloc 出现特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52415850/

相关文章:

python - 同时连接 linux 和 windows 的路径

concatenation - 使用串联符号扩展

python - rbindlist相当于Python中R的函数

c - ICE 默认 IO 错误处理程序执行 exit(),pid = 11281,errno = 4

php - 在基于 C 的 Web 服务器上执行和输出 PHP - 卡住了!

c - malloc.c 中的断言 :2453

C - 无法释放 char** 指针内存 - 错误 _CrtIsValidHeapPointer

c - C 中的数组传递

c - 另一个函数内的 Malloc

c - C 会自动为我分配内存吗?