- 締切済み
自己参照型構造体2
いつも世話になります。 以前、自己参照型構造体について質問しました。 そのときは、Free関数についてでしたが、 今度は、関数についてです。 プログラム自体は、単純なのですが、 1)メイン関数内に、while(1){switch(){case...}} 2)[case 1]入力[case 2]表示[case 3]ファイル保存[case 4]ファイル読込[case 5]終了 関数化せずに、メイン関数内に記述をしましたら、 動作に問題はなかったです。 これを、関数化するとエラー(異常な動作)になります。 void inputdata(data *dat,int *cnt); void outputdata(data *start,int cnt); のようにしていますが、うまく関数化できる方法はありますでしょうか? よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mitoneko
- ベストアンサー率58% (469/798)
関数の宣言、そのものは正常と思います。 正確には、ソースとどういう異常な動作をするかがわからないと、おかしな原因がわかりませんが・・・ 書いてある内容から、直感的には、inputdataの第一引数のdatに関するメモリーの確保関係に、何かがひそんでいそうな気がします。 チェックポイントとしては、関数内で正しくメモリーを確保しているか? 関数内で確保されたメモリーアドレスが正しく、datに引き渡されているか? 余計なfree をしていないか?(処理内容によりますが、freeのタイミングは、「終了」か「ファイル保存」のどちらかなように感じます。「ファイル読み込み」では、特殊な初期化が必要かどうか・・・ もしこれで解ければ良いですが、解けないのなら、ソースと、異常な動作の、詳しい内容がないとどうにもならないかと。