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でエラーが出たのは今回初めてで、
知らんフリーしている訳にもいかず、
(リソースが足りなくなっているのかなあ)
どうしたら、いいでしょうか?
mallocして取得したポインタをfreeしてないとかでは?
たとえば
int* p = static_cast< int* >( malloc( sizeof( int ) * 8 ) );
if ( !p ) return -1;
p++; // ここでmallocして取得したポインタを更新
free( p ); // 変更したポインタに対してfree
とか。
int *p=malloc(sizeof(int)*10);
p[10]=0; // 0-9 しかないのに 10 を使っちゃダメ
とかやってるから
>DAMAGE: after Normal block (#54) at 0x0E940920.
「通常ブロックの後方にダメージあり」となってるのだと推測。
> 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
ということで、私の発言は忘れてください。
# こういうタイトルのつけ方ありなのかなぁ。。。
_free_dbg と言うのがあるらしい
私は使ったことがないですけど
MSDNに使用例も一緒に記載されてました
参考になされてはどうでしょうか
いろいろありがとうございます。
やっぱり、無い器を無理やり、多めに使おうとしていたようです。
>こういうタイトルのつけ方ありなのか
大いにアリでしょう。
シャレは構わないけど、本題が連想出来ないのは却下。
「freeでエラー。でも知らんフリー」くらいなら。
題目のお話は「雑談ラウンジ」へおいでください
>freeでエラー。でも知らんフリー
さては貴方、笑いを知ってますな?