今天早上我刚刚与C的行为感到惊讶(这真的让我感到惊讶。)为什么字符指针不给分段错误?
如果我写这样的代码:
char *txt;
strncpy(txt,"hello",4);
printf("%s\n",txt);
后来我才知道,它将使分割的错,因为我没有将内存分配给'txt'指针。好的....现在看到这个代码:
char *txt = (char *) calloc(0,sizeof(char));
strncpy(txt,"hello",4);
printf("%s\n",txt);
直到现在我还分配0字节为“TXT”,但我只能惊讶它为什么不给段错误,而不是给段错误,它是给予正确答案“地狱”。
任何人都可以解释我这样的C类行为吗?
尝试调用'免费(txt)',看看会发生什么...... – pat
当m调用free(txt)时,每件事情都很好,我的意思是没有错误即将到来,它给出了正确的答案。 @拍 – sdream