我使用 VScode,它在线显示“跟踪/断点陷阱”:delete [] str; 这是我的代码:
#include <iostream>
#include <cstring>
using namespace std;
class String
{
private:
char *str;
public:
String() : str(new char[1]) { str[0] = 0; }
const char *c_str() { return str; }
String operator=(const char *s);
~String()
{
delete[] str;
}
};
String String::operator=(const char *s)
{
delete[] str;
str = new char[strlen(s) + 1];
strcpy_s(str, strlen(s) + 1, s);
return *this;
}
int main()
{
String s;
s = "abc";
cout << s.c_str() << endl;
return 0;
}
代码在析构函数处停止: 删除[] str; 我想知道发生了什么。