メモリ破壊探し

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

メモリ破壊探し

投稿記事 by もるも » 6年前

波形を作って音を鳴らすプログラムを作っている最中。
難しいが、何かといい経験になるだろうと思いC++でWINAPI使いながらやってるわけなんだけど。

描画用の波形データの配列をdelete[]するときにメモリが破壊されてると言われまくり、
2、3日悩んで分かった結果・・・
音階が変わるたびに波形の長さも変わるんだけど、
マウスでの波形描画範囲判定が最大のままで小さくなるたびにはみ出して上書きしてたという(;^ω^)

C#だったらちょい待ち!はみ出してるよ!と怒ってくれるもんなぁ(´・ω・`)
そういうところに気が利かなくなってて悲しい。

アバター
usao
記事: 1889
登録日時: 12年前

Re: メモリ破壊探し

投稿記事 by usao » 6年前

vectorの2種の要素アクセス手段をdebugか否かで切り替えるようなことを昔やってたような記憶.

CODE:

class Test
{
  public:
  #ifdef _DEBUG
    int &At( int index ){  return m_Data.at(index);  }  //範囲外チェックあり
  #else
    int &At( int index ){  return m_Data[index];  }  //範囲外チェックなし
  #endif
  
  private:
    std::vector<int> m_Data;
}

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

Re: メモリ破壊探し

投稿記事 by もるも » 6年前

>>usaoさん
そういうミスを減らす書き方もあるんですねぇ。

経験が浅くてバグがあって痛い目にあった回数が少ないゆえに、
バグ予防が思いつかないという悩ましさ(´・ω・`)

アバター
usao
記事: 1889
登録日時: 12年前

Re: メモリ破壊探し

投稿記事 by usao » 6年前

バグらなければ,どうということはない!

と,ひたすら強気で押すという手もありますよ?(ない)

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

Re: メモリ破壊探し

投稿記事 by もるも » 6年前

>>バグらなければ,どうということはない!

バグ潰しで時間が奪われまくると言えなくなる言葉(笑)