nedmallocをアプリケーションに実装しているときに、nedmallocがメモリのブロックを解放することを拒否し、割り当てられなかったと主張する状況に頻繁に遭遇します。
v1.06beta1_svn1151バージョンを使用しています。
デバッグ中に、失敗している特定の条件が表示されるようになりましたが、他のすべて(マジックナンバーを含む)は成功しています。条件は次のとおりです。
if((size_t)mem-(size_t)fm>=(size_t)1<<(SIZE_T_BITSIZE-1)) return 0;
Win32では、これは次と同等のようです。
if((int)((size_t)mem-(size_t)fm)<0) return 0;
これは次と同じようです:
if((size_t)mem<(size_t)fm) return 0;
私の場合、私は本当にmem<fmを見ます。私が今理解していないのは、この状態がどこから来ているのかということです。コード内のどこにもfm<=mを保証するものは見つかりません。それでも、「selectは壊れていません」:それが本当にnedmallocのバグであるとは思えません。おそらくどこかで何か間違ったことをしているのでしょうが、それを見つけることができません。nedmallocのデバッグ機能をオンにすると、問題は解決します。
ここの誰かがnedmallocの内部動作を理解している場合、なぜfm <= memが保証されているのか説明していただけますか?