一创建新的 MyString 对象,我的程序就崩溃了。
当在构造函数中将 stringArray[0] 设置为空字符时,我遇到了内存访问冲突。有什么想法吗?
这是构造函数
MyString::MyString()
{
stringSize = 0;
stringCap = 16;
stringArray[stringCap + 1];
stringArray[0] = '\0';
}
这里是类的私有(private)成员
char* stringArray;
int stringCap;
int stringSize;
这是在 main.cpp 中创建对象的地方
MyString s1;
最佳答案
这一行不分配内存:
stringArray[stringCap + 1];
您需要将其替换为:
stringArray = new char[stringCap + 1];
不要忘记删除内存。
这里也适用 3 规则,因为您拥有对象拥有的 RAW 内存。
或者,如果您不想要动态分配,而是想要固定大小的字符串。然后您可以更改成员的声明:
char stringArray[ <FixedSizeHere> ];
关于c++ - 未处理的异常错误、内存冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451530/