我知道这个程序没有分配足够的内存。
我需要帮助的是描述执行此代码时发生的情况的解释。
我说“因为只分配了4个空间,所以没有给足够的空间,所以会导致错误。”这听起来不对。谢谢。
#include <stdio.h>
#include <string.h>
int main()
{
char word1[20];
char *word2;
word2 = (char*)malloc(sizeof(char)*20);
printf("Sizeof word 1: %d\n", sizeof (word1)); //This line outputs 20
printf("Sizeof word 2: %d\n", sizeof (word2)); //This line outputs 4
//before & after I used malloc
strcpy(word1, "string number 1");
strcpy(word2, "string number 2"); <---- What is this doing
printf("%s\n", word1);
printf("%s\n", word2);
}
最佳答案
size of(word2)返回4,因为这是指针的大小
char *word2;
是一个指针,并且有0个字节分配给它(不像您提到的那样是4个字节)
size of(word1)返回20,因为这是数组的大小
char word1[20]
是一个数组,并为它保留了20个字节
关于c - 需要Word2变量的解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14836978/