mercredi 3 mai 2017

Why does getting front of queue of queue of char causing a bad_alloc?

myclass::myclass(queue<queue<char> > construction_info){
  //why does this line crash?
  queue<char> first_line_of_construction_info = construction_info.front();
  construction_info.pop();
}

I am reading from text files (not generated by me so I can't change the format), into a queue of queue of char. It means lines of characters. And I process that info to generate the class. However, after working in a few debug messages I realized that the first time I am getting a bad_alloc on execute (the program initialized all myclasses from text files at startup) is this line in the code.

I'm new to working with C++ and my google-fu hasn't really helped me with this problem. Does anyone have any suggestions as to where I can start solve this crash?

Simply uncommenting the class constructor is letting my program work without any crashes, obviously without generating actually useful objects of course.

Using g++ with c++11 on linux.

Edit:

Here is the queue generation code cut from the function:

  queue<queue<char> > cur_file;

  ifstream file(x.path().filename().string());

  queue<char> cur_line;
  char ch;
  while (file >> noskipws >> ch) {
    if(!isspace(ch)){
      cur_line.push(ch);
    }else if(ch == '\n'){
      cur_file.push(cur_line);
      cur_line = queue<char>();
    }
  }

Aucun commentaire:

Enregistrer un commentaire