0

我有一个与动态内存有关的问题。我现在已经几乎放弃使用它并改用向量了,但仍然很想知道为什么以下类型的代码经常给我一个运行时错误,内存分配错误。有没有办法用动态内存来做到这一点?

这个想法基本上是根据某些条件使用循环来增加数组的大小。如前所述,我现在只为此使用 vector.push_back() ,但我想我会发布并看看是否有任何见解。

#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
#include <new>

int main()
{
    ifstream infile.open("file.txt");

    string str1, str2; stringstream os;

    int length;
    string *vecarr = new string[length];
    length = 0;

    while(!infile.eof())
    {
        getline(infile,str1);
        if(str1.find("expression") != string::npos)
        {
            length++;
            vecarr[length-1] = str1;
        }
    }

    infile.close();
    return 0;
}
4

1 回答 1

2

length在表达式中未初始化new string[length],因此这是普通的未定义行为。您不能读取未初始化的int变量。

于 2013-11-12T23:12:08.827 回答