相关疑难解决方法(0)

什么是复制省略和返回值优化?

什么是复制省略?什么是(命名)返回值优化?他们意味着什么?

它们会在什么情况下发生?有什么限制?

c++ optimization c++-faq return-value-optimization copy-elision

350
推荐指数
4
解决办法
7万
查看次数

在函数内取消分配动态内存

第一次在这里拥有帐户,但是我很喜欢这个网站。

我试图创建一个接收const char数组并返回所述数组指示的部分的函数。函数与数组一起接收两个值,这些值指示要提取的部分中第一个字符的索引和最后一个字符的索引。

我要尝试的棘手部分是,我正在创建一个临时数组变量以将该部分保存在函数中,并且鉴于该部分的大小不能保证为常数,我正在使用动态内存进行分配必要的空间,这就是我遇到的问题。

每当函数返回任何信息时,函数都会终止,并且程序没有机会释放已分配的内存。如果删除该变量,则无法返回信息。

我尝试创建一个单独的指针变量,以在信息形成后指向该信息,但是一旦释放了内存,该信息似乎就无法恢复。

解决问题的程序:

char* seperateString(const char* a, int b, int c) {

                // This is simply to assure that I don't allocated a negative size
        if (b < c) {
                cout << "***Error with \"seperateString\" function***" << endl << endl;
                return '\0';
        }

        char* seperated = new char[c - b + 2];

        int i = 0;
        int j = b;

        for (; i <= c - b; i++)
                seperated[i] = a[j++];

        seperated[i] = '\0';

        char* send …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

5
推荐指数
1
解决办法
153
查看次数