hira様の意見に補足___
> 同じプログラムを98で実行すると起こらないし…。
ヒープ領域に対してメモリを確保(HeapAlloc,HeapReAlloc)した場合、
実は確保したメモリ以上にデータを扱う事ができます。
これは確保されたヒープハンドルがハンドルに過ぎないためであり、
たまたま未確保の領域を侵しても実害が無かっただけに過ぎません。
しかし、幾ら実害が無くても確保したヒープ領域を開放(HeapFree)すると、
確保した領域外のデータまでクリアしてしまうみたいで
初めてエラーが発覚したりします。
この辺はABというよりAPIの問題になってきますので、
一度MSDN等を参照されることをお勧めします。
http://www.microsoft.com/japan/msdn/