- 締切済み
動作させると同じロジッックを何べんもまわります。
C++、Qt、Linuxの環境で開発をしています。 何か動作をさせると1回、2回と同じロジックを意味なくまわり、だんだん重くなってきます。 メモリーを開放していないのかとも考えたんですが、メモリー確保は配列(例えばa[10])と確保しているので、プログラマーが能動的にメモリーを開放する必要は、無いですよね。 で、私は意味もなく、なんべんもまわるプログラムの動きに注目したのですが、なぜ何べんも回るのか。なぜ回る回数がだんだん増えていくのかがわかりません。 わかる方がぜひご教授をお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- hidebun
- ベストアンサー率50% (92/181)
「同じロジッックを何べんもまわります」って言い回しが、そもそも曖昧でよくわからないんです。 ・for文等で無限ループしているのか ・ある関数が何度も呼ばれるのか デバッガを使って、状況を調べてみてはいかがですか? 病院に電話して「あー、お腹が痛いような気が」って言っても、医者は、 「それが単なる腹痛なのか、もっと深刻な病気なのか、検査しないとわかりません。とにかく、来なさい」 と答えるでしょう。 それと同じです。この報告からだけでは、「プログラムにバグがあるんだろうねぇ」 としか答えられません。 「なんべんもまわる。回る回数が増えていく」のは、どうやって確認したんですか? ログファイル等に、変数の値を出力して見るとか、そういうことをされたんでしょうか? それが出来るなら、デバッガを使って、プログラムの実行を停止し、呼び出し元の関数を見るとか、出来るんではないでしょうか。 それが出来ないなら、ソース見せてもらわないと、ループの終了条件を間違えているとか、 メモリを破壊しているとか、数限りなく原因が考えられるので、超能力者でも無い限り、 原因を特定するのは無理です。 あなたがソースコードを書くのに参考にしたサンプルプログラムなどが、あるのではないですか?サンプルプログラムでは起こって、自分のプログラムでは起きない、その差分に着目すれば、原因が推測できませんか?
- zwi
- ベストアンサー率56% (730/1282)
>GUIのプログラムを組むと勝手にロジックを何回も回ることってあるんでしょうか。 Qtだとシグナルとスロット処理とかそれ以外にもインスタンスの生成の仕方に問題があるとか枚挙にいとまがないほど考えられます。 ご自分でデバッグできないレベルの技術力となるとどんなことをやっているか想像も出来ないのでソースを見せて欲しいとみなさんが仰っている訳です。
- SherlockHolmes2
- ベストアンサー率40% (175/429)
ソースが無いので、何とも言えませんが・・・。 もしかして、C++のクラスの使用方法を間違えてたりしませんか? とにかく、すぐに回答ほしいのであれば、ソースを見せて下さい。 話はそれからです。
- asuncion
- ベストアンサー率33% (2127/6289)
プログラムは思ったとおりには動きません。書いたとおりに動きます。 というわけで、どんなソースコードを書いたのか見せてください、というのは 別の回答者さんからの回答と同じです。
- zwi
- ベストアンサー率56% (730/1282)
どういう状況なのか、さっぱり分かりません。 メモリー消費が増えて重くなるのは、搭載メモリによって変わりますが相当なメモリサイズまで消費した場合です。
- TooManyBugs
- ベストアンサー率27% (1472/5321)
ソースも出さずに解るわけがない。 言えるのはあなたに質問能力が無いと言うこと、であればプログラミング能力も・・・・・・
補足
問題のソースを載せたいのですが、どこのソースを載せればいいかもわかりません。 不具合の箇所がわからないし、全ソースは膨大なので。 でもそれだど答えられないってことですよね。 GUIのプログラムを組むと勝手にロジックを何回も回ることってあるんでしょうか。 あるとしたら、どんな機能なんでしょうか。 何回もまわる現象のヒントも手元にないので、作業が止まってしまっています。経験則でも結構ですので、お願いします。