今天早上我剛剛與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