gpt4 book ai didi

c++ - 自定义 char* 插入函数在多次运行时会出现运行时错误

转载 作者:行者123 更新时间:2023-11-30 05:07:28 24 4
gpt4 key购买 nike

我正在尝试制作我自己的 String 类,它叫做 MyString。我几乎没有字符串操作函数。除了插入功能外,它们都可以工作。当我多次使用插入功能时,程序崩溃(source.exe 已停止工作)。我目前正在使用 Dev C++。

MyString MyString::insert(MyString s2, int pos) {

int size = strlen(this->getptr());

if(pos > size || pos < 0){
return "Error";
}

char * ptrLeft = this->substr(0, pos);
char * ptrRight = this->substr(pos, size - pos);

strcat(ptrLeft, s2.getptr());
strcat(ptrLeft, ptrRight);

return ptrLeft;
}

这是 MyString 类中的 substr() 函数:

char * MyString::substr(int position, int length) {
char* otherString = 0;

otherString = (char*)malloc(length + 1);
memcpy(otherString, &this->getptr()[position], length);
otherString[length] = 0;

return otherString;
}

参数化构造函数(char * ptr 是私有(private)成员):

MyString::MyString(char* str){
int size = strlen(str);
ptr = new char[size];
ptr = str;
}

如果我多次执行以下操作,它有时会崩溃。

buff = buff.insert(" Text", 5);
cout << buff;
system("PAUSE");

buff = buff.insert(" Text", 5);
cout << buff;
system("PAUSE");

最佳答案

insert 调用没有分配新数组的大小。仅在第一个 substr 调用中进行 malloc,直到原始数组的大小

关于c++ - 自定义 char* 插入函数在多次运行时会出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47416115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com