我发现了一个非常有趣的问题。
当我使用以下代码时:
int main() {
char * in = "hi, ";
char str[10];
strncpy(str, in, 2);
printf("output = %s", str);
return 0;
}
我的结果是什么,printf
没有工作。
但如果我使用这个:
int main() {
char * in = "hi, ";
char * str = malloc(sizeof(char) * 10) ;
strncpy(str, in, 2);
printf("output = %s", str);
return 0;
}
我能得到我所期望的。
为什么会这样?是因为堆栈和堆吗?这究竟是如何产生如此巨大差异的呢?