c++ - 未处理的异常错误、内存冲突

标签 c++ string class pointers

一创建新的 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/

相关文章:

java - 为什么String.equals里面有一个 "=="?

javascript - 让按钮切换 div 的类

python - Python 中的实例变量与类变量

c++ - 需要元编程魔术来以无错误的方式定义位字段的母矿脉

c++ - 如何检查数组输入是否失败?

c++ - std::array 类的堆栈溢出

c++ - 在字符串 C++ 中查找标点符号

c++ - 多重但唯一的类继承

java - 如何替换字符串中的特殊字符?

java - 在 Jython 中调用带有 java.lang.Class 的方法