• 締切済み

C言語(MFC)についての質問です

MFC初心者です 大学でC言語の実験を行なっています 内容は音声信号を取得し、フーリエ変換し、元の信号とフーリエ変換後の信号の波形をピクチャエリアに描画する、といったものです 音声信号取得のプログラムはまだ自分たちには難しい、とのことで、作成済みのプログラムを使用しています フーリエ変換のプログラムは下記のサイトのコードを借りさせていただいてます http://d.hatena.ne.jp/yatt/20080331/1206959305 ですので、実際に作成したプログラムは波形を描画する、といった辺りぐらいになります 作成したプログラムを実行したところ、ある程度の回数(約3000回)描画すると、エラーで止まってしまいました。 おそらく原因は何か消し忘れているものがあり、ループが繰り返されるうちにメモリがいっぱいになってしまったことだと考えています 描画の際、仮想メモリを使用して描画しているのですが、このときに作成した仮想メモリのデバイスコンテキストもビットマップもDeleteObjectで消しましたし、描画に使用するために作成した各種ペンやブラシもDeleteObjectで消しました なので、あと消去すべきは、上記のサイトでお借りしたコードから作成した FftBox box[BUF_DATAN]; だと思っています これをDelete[]で消去しようとしたのですが、「FftBoxからvoid*に変換できません」と、エラーが出ました なのでFftBoxをvoid*に変換するためのコードを調べようとしたのですが、上手く見つけられませんでした。。。 この”box”を消去する際にDelete関数を使用するのは間違いなのでしょうか? あるいは、そもそも原因を取り違えているのでしょうか? どなたか分かる方、是非教えてください。。 長々とスイマセン、

みんなの回答

noname#150510
noname#150510
回答No.2

デバイスコンテキストが怪しいねえ。 描画処理の部分だけコメントアウトして実行するとどうなりますか? これでエラーが起こらなければ、原因はデバイスコンテキストにあるでしょう。 http://msdn.microsoft.com/ja-jp/library/st2k3wfa(v=VS.100).aspx 作成したGDIオブジェクト(ペン、ブラシなど)をデバイスコンテキストに選択したまま、GDIオブジェクトを削除してませんか? 以前選択されていたGDIオブジェクトをデバイスコンテキストに戻してから、デバイスコンテキスト、GDIオブジェクトの順番で削除して見ましょう。

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.1

とりあえず、MFC も、そのページのコードも C 言語ではなく C++ だということを理解していますか。 質問にある変数 box は配列のようですので、delete 演算子を使う必要もありませんし、使うことも出来ません。 間違っているのは他の場所だと思われます。

mukami01
質問者

お礼

C++であることは理解してます。 自分の中でC言語とごっちゃになってました。。。 間違ってるのは他の場所ですか・・・ 回答ありがとうございます また一からコード見直してみます

関連するQ&A