ここにコードの要点がありますが、この質問にコードを追加することができます。私の単純なC++プログラムがキューと連動していて、無効なポインタにfstreamエラーが出るのはなぜですか?
https://gist.github.com/alevnyaa/e917bc2aa1e72aa210d8cff9fa5e922b
私はさえないですしたようprint_queueがライン62で呼び出された後、プログラムがクラッシュ最初の数行を通じて働いた後、C++ 11 Linux上でG ++ 6.3でこのプログラムをコンパイルして実行手動でポインタやメモリを操作すると、私はこの問題が何であるか分かりません。
*** Error in `./a.out': free(): invalid pointer: 0x0000000000606160 ***
私は任意の提案を試すことができます。私は単純な問題に気づいていないと仮定していますが、それを何度も見てから盲目になっています。
まずファイルD301.txt
D301 Capacity 40
1 1 5
2 2 4
3 3 4
4
5 2
6
7 1
ifqueue.cpp
#include <fstream>
#include <iostream>
#include <queue>
void stoq(std::queue<char>& q, std::string s){
std::queue<char> empty;
std::swap(q, empty);
for(char ch : s){
if(!isspace(ch)){
q.push(ch);
}
}
}
std::string print_queue(std::queue<char> q){
std::cout << "Queue: ";
int i = 0;
while(!q.empty()){
std::cout << "i" << i;
i++;
std::cout << q.front();
q.pop();
}
std::cout << std::endl;
}
int main(){
std::fstream infile("D301.txt");
std::string line;
std::queue<char> q;
std::getline(infile, line);
stoq(q, line);
print_queue(q);
std::string classroom_name;
while(q.front() != 'C'){
classroom_name += q.front();
q.pop();
}
for(int i=0; i<8; i++){
q.pop();
}
std::string capacity_str;
while(!q.empty()) {
capacity_str += q.front();
q.pop();
}
int capacity = stoi(capacity_str);
std::getline(infile, line);
while(infile){
std::getline(infile, line);
std::cout << "fl" << std::endl;
stoq(q, line);
std::cout << "sl" << std::endl;
print_queue(q);
std::cout << "tl" << std::endl;
}
infile.close();
}
は-1本当に保証された:?
はここ
コードですありがとう
ここに関連コードを直接掲載してください。 – Carcigenicate
stackoverflow.com上のすべての質問は、問題を無意味にする、いつでも動作を停止することができますいくつかの外部Webサイトへのリンクの代わりに、質問自体に完全な情報を含める必要があります。 "なぜ私のコードは機能していないのですか?"という形式のすべての質問には、[mcve]が含まれていなければなりません。詳細については、このヘルプセンターの記事を参照し、質問を編集して[mcve]を追加してください。 –