使用vscode
執行下面這段代碼
int main()
{
char *b = "Hello";
char *a = new char;
strcpy(a, b);
cout << a << endl;
delete a;
cout << a << endl;
system("pause");
}
在執行到delete a;這句的時候vscode彈出例外
出現例外。
Trace/breakpoint trap
想請教是為什么?
uj5u.com熱心網友回復:
delete a;后面那一句 cout << a << endl; 刪掉uj5u.com熱心網友回復:
里面的問題1.new 的時候沒有指定大小
2.delete一個物件后,重新分配前,不能再操作這個物件
uj5u.com熱心網友回復:
int main()
{
char *b = "Hello";
char *a = new char; //這里改成char *a= new char[6];
strcpy(a, b);
cout << a << endl;
delete a; //這個最后邊,否則銷毀了你還怎么用。而且要改成delete[]
system("pause");
}
uj5u.com熱心網友回復:
你這個是印度的程式。new char申請1個位元組空間。
然后嘗試用 1個位元組的空間擠下6個位元組。
可能也只有三哥那邊的編譯器可以試試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/32552.html
標籤:C++ 語言
上一篇:C單鏈表資料輸入,列印
下一篇:Qt適合做資料應用程式嗎?
