【发布时间】:2015-06-22 04:27:33
【问题描述】:
我想知道如果 src 数组不包含一个,strdup 是否会在新数组的末尾添加一个 '\0' ?
假设我们有一个包含由这种 malloc 分配的“hello”的数组
malloc(sizeof(char) * 5);
所以 5 个字节对应 5 个字符。
我猜 src 字符串没有为 '\0' 接收到足够的内存。
在这种情况下应该发生什么?
【问题讨论】:
-
源字符串怎么能不包含一个?
-
如果你给出一个纯字符串,例如“hello”?
-
是的。
"hello"包含一个\0。 -
我不知道,但如果你初始化错误你的 char*,我的意思是。将他分配 6 个字节并给他 6 个字符......类似的东西。我知道编译器会尝试添加一个 \0 但它可能会失败我错了吗?
-
@Blastfurnace 如果您的 char 数组不是以空字符结尾的,那么您不应该使用“字符串”这个词。