我在这里发布两个片段。 第一个是给我分配内存的分段错误。第二个工作正常。删除字符指针的分段错误
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