ダメージって。。。! そんなこと言ったら駄目ーじ

[戻る]
あれっ 2005/07/29(金) 16:12:07
Win2000のVC++6で使ってます。
ある関数の中で、いくつかmallocしているのですが、

FTData = (double *) malloc(FrameNo * 512 * sizeof(double));   
if (FTData == NULL)
{
  printf("Sorry! Memory cannot be secured ! \n");
  exit(10);
}
とメモリ確保していて、
仕事が終わった後に、
free(FTData);
をやったとたん、
VC++のDebug Libraryから
Debug Error!
Program C\Code.exe
DAMAGE: after Normal block (#54) at 0x0E940920.
(Please Retry to debug the sapplication)

のエラーです。

freeでエラーが出たのは今回初めてで、
知らんフリーしている訳にもいかず、
(リソースが足りなくなっているのかなあ)
どうしたら、いいでしょうか?

Blue 2005/07/29(金) 16:23:18
mallocして取得したポインタをfreeしてないとかでは?

たとえば

int* p = static_cast< int* >( malloc( sizeof( int ) * 8 ) );
if ( !p ) return -1;
p++; // ここでmallocして取得したポインタを更新
free( p ); // 変更したポインタに対してfree

とか。

tetrapod 2005/07/29(金) 16:29:24
int *p=malloc(sizeof(int)*10);
p[10]=0;  // 0-9 しかないのに 10 を使っちゃダメ
とかやってるから
>DAMAGE: after Normal block (#54) at 0x0E940920.
「通常ブロックの後方にダメージあり」となってるのだと推測。

Blue 2005/07/29(金) 16:42:11
> after Normal block 
でぐぐったらわかりました。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-
8&q=after+Normal+block+&num=50

ということで、私の発言は忘れてください。

# こういうタイトルのつけ方ありなのかなぁ。。。

wood 2005/07/30(土) 07:20:14
_free_dbg と言うのがあるらしい
私は使ったことがないですけど
MSDNに使用例も一緒に記載されてました
参考になされてはどうでしょうか

あれっ 2005/07/30(土) 11:35:17
[[解決]]
いろいろありがとうございます。
やっぱり、無い器を無理やり、多めに使おうとしていたようです。

アミバ 2005/08/04(木) 06:48:41
>こういうタイトルのつけ方ありなのか
大いにアリでしょう。

イヤ 2005/08/04(木) 15:08:44
シャレは構わないけど、本題が連想出来ないのは却下。

「freeでエラー。でも知らんフリー」くらいなら。

wood 2005/08/04(木) 21:42:19
題目のお話は「雑談ラウンジ」へおいでください

アミバ 2005/08/06(土) 23:07:37
>freeでエラー。でも知らんフリー
さては貴方、笑いを知ってますな?

古いスレッドには追加発言できません。