如何使函数内部分配的内存在函数执行完成后仍保持分配状态?

问题描述 投票:-1回答:2

[我用C ++编写了一个函数,该函数将一个字符串和一个char作为参数,并返回一个字符串数组,其中每个数组元素都是该字符串中的一个单词。

string* breakS(string s, const char* c){
    string::iterator it;
    int j=0, i = 1;
    for(it = s.begin();it!=s.end();it++){
        if(*it == *c){
            i++;
        }
    }
    string* R = new string[i];
    for(it = s.begin();it!=s.end();it++){
        if(*it != *c){
            R[j].push_back(*it);
        } else {
            j++;
        }
    }
    return R;
}

由于我永远不知道输入字符串将有多少个单词,所以我不得不动态分配字符串数组。

该程序运行良好,但是当函数完成执行后,由[[string * R =新的字符串[i]]]分配的内存将被释放,因此我相信如果字符串输入足够大,则字符串数组由该程序重新调谐可能会被覆盖。如何在函数执行完成后使在函数内部分配的内存保持分配状态?

我用C ++编写了一个函数,该函数将字符串和char作为参数,并返回一个字符串数组,其中每个数组元素都是该字符串中的一个单词。 string * breakS(string s,const char * c){...

c++ memory-management
2个回答
1
投票
您的理解有点偏离。

0
投票
如何使函数内部分配的内存在函数执行完成后仍保持分配状态?
© www.soinside.com 2019 - 2024. All rights reserved.