0
我這段代碼是轉儲核心:奇怪的核心轉儲問題
int main(int argc,char *argv[])
{
char *p = "onnm";
printf("%c\n",++*(p++));
return 0;
}
什麼可能是在printf的行中的原因是什麼?
我這段代碼是轉儲核心:奇怪的核心轉儲問題
int main(int argc,char *argv[])
{
char *p = "onnm";
printf("%c\n",++*(p++));
return 0;
}
什麼可能是在printf的行中的原因是什麼?
字符串文字是隻讀的,您不能更改它們。
使用例如char p[] = "onnm";
您可以像這樣的代碼,因爲C. 例如「在語言標準不一致」的,
const char const_buff[] = { 'o','n', 'n', 'm', '\0' }; // OK
char* pArray = const_buff; // not OK
在它應該不允許你編譯同一行,
char *p = "onnm";
但是你可以編譯,所以你可以改變一個只讀字符串的錯誤。
++ * (p++)
你的調試器應報告是什麼原因導致你的時候加載它的核心轉儲 - 也就是說,它是一個訪問衝突,分段錯誤,偏離的讀等 – Crashworks 2010-10-13 22:43:30
參見[這個問題](HTTP://計算器。 COM /問題/ 2096448)。 – 2010-10-13 22:45:05