gpt4 book ai didi

c++ - CPP 中字符串的内存管理问题

转载 作者:行者123 更新时间:2023-11-30 04:22:00 25 4
gpt4 key购买 nike

我正在尝试分离用 ' ' 填充的字符串并将其存储在数组中。为此,我编写了代码,

string* componentsOfStringSeperatedBystring(string originalString, string stringCompare){

string *arryOfStrings=NULL;

string *tempArrayString = NULL;
for (int i=0; i<originalString.length(); i++) {


size_t position = originalString.find(stringCompare);
cout << "\nposition" <<position;

if (position == originalString.npos) {

break;
}
size_t subStringLength = originalString.length() - position;

cout << "\nsubStringLength" <<subStringLength;
string subString = originalString.substr(0,position);

cout << "\nsubString" <<subString;

tempArrayString = (string*)realloc(arryOfStrings, (i+1)*sizeof(string));

cout << "\n i \t" <<i;
if (tempArrayString != NULL) {

arryOfStrings = tempArrayString;
arryOfStrings[i] = subString;
}


cout << "\narryOfStrings" <<arryOfStrings;
originalString = originalString.substr(position+1,subStringLength);
}

return arryOfStrings;
}

我在“arryOfStrings[i] = subString;”行崩溃了,如果我只是先分配足够的空间,然后不重新分配,我就不会崩溃。

最佳答案

不要对 C++ 风格的对象使用 C 风格的内存管理。要么完全采用 C 风格(使用以 null 结尾的 char* 字符串),要么完全采用 C++ 风格(使用 std::vector<std::string> )。

关于c++ - CPP 中字符串的内存管理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14030011/

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