我在這裏發佈兩個片段。 第一個是給我分配內存的分段錯誤。第二個工作正常。刪除字符指針的分段錯誤
1)
int main()
{
char* ch = new char;
ch = "hello";
cout << "\n " << ch << endl;
delete[] ch; ////OR delete ch; ---> have tried both
return 0;
}
2)
int main()
{
char* ch = new char;
cin >> ch;
cout << "\n " << ch << endl;
delete[] ch; ///OR delete ch /// Both are working fine....
return 0;
}
有誰請告訴我,爲什麼第一個與分段故障失敗,第二個是工作的罰款既delete
和delete[]
。因爲對我來說這兩個程序似乎都是一樣的。
這是C++。使用'std :: string'。 'ch'只是一個指針。分配字符串文字只是使其指向字符串文字,並且剛分配的內存將丟失。第二個是未定義的行爲,如果你使用'delete []'而不是'delete'。出現工作正常≠工作正常。 – chris 2014-08-29 14:06:28