我复制了一个字符串,但由于某种原因,该字符串被复制了两次。
bool check(const char* word) {
// copy the word
char *copy = malloc(sizeof(word));
strcpy(copy, word);
printf("word %s\n", word);
printf("copy %s\n", copy);
return false;
}
此功能的输出是
word myWord
copy myWord
myWord
如果我删除' \ n' printf中的字符用于复制,输出更改为
word myWord
copy myWordmyWord
我尝试使用调试器来浏览此代码,但调试器显示副本的值为" myWord"
有谁知道这里可能会发生什么?
答案 0 :(得分:3)
您需要分配strlen(word) + 1
个字节。 sizeof(word)
返回存储指针的字节数。