创建新的MyString对象后,我的程序崩溃。
在构造函数中将stringArray [0]设置为null时,出现内存访问冲突。有任何想法吗?
这是构造函数
MyString::MyString()
{
stringSize = 0;
stringCap = 16;
stringArray[stringCap + 1];
stringArray[0] = '\0';
}
这是班上的私人会员
char* stringArray;
int stringCap;
int stringSize;
这是在main.cpp中创建对象的位置
MyString s1;
最佳答案
该行不分配内存:
stringArray[stringCap + 1];
您需要将其替换为:
stringArray = new char[stringCap + 1];
不要忘记删除内存。
由于对象拥有RAW内存,因此3规则也适用于此。
或者,如果您不希望动态分配,而是希望使用固定大小的字符串。然后,您可以更改成员的声明:
char stringArray[ <FixedSizeHere> ];