创建新的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> ];

08-06 04:28