人気マンガがだれでも無料♪電子コミック読み放題!!

struct cellにはint key,string data,nextポインタがあります。
以下にエラーが出てそうなところのコードを載せておきます。
なぜセグメンテーションフォルトが出ているのかどうすれば直せるのかを教えてください。

struct cell *make_cell(int key, const string data)
{
struct cell *mk_cell;

// cellの領域を確保する
mk_cell = new struct cell;

  mk_cell->data=data;

mk_cell->key = key;

// nextを初期化
mk_cell->next = NULL;

return mk_cell;
}


メイン文の中
while(f_df>>line){
int index=line.find(",");
string f_id = line.substr(0,index);
string w_str = line.substr(index+1);
int w_int=atoi(w_str.c_str());

struct cell *tmp_cell;// リスト要素の生成
tmp_cell=make_cell(w_int,f_id);
cout<<tmp_cell->key;

// 生成した要素をリストの先頭に追加
tmp_cell->next = dfhead;

// 先頭アドレスを更新
dfhead = tmp_cell;

}
f_df.close();

A 回答 (1件)

デバッガ使って、ステップ実行とか試してみましたか?



とりあえず…dfheadの型とループ開始時に何が入っているのか?
についてはどうなんでしょう?
# 一方向リスト構造なんでしょうけど、「リストの先頭に追加」っていうコメントはどうかと。
# あと、dfhead以外に本当の先頭を保持している変数なりあるんですよね?無いとdeleteできませんよ?
    • good
    • 0
この回答へのお礼

参考にします。ありがとうございます。

お礼日時:2019/07/07 15:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング