C++相談室 part89

このエントリーをはてなブックマークに追加
759725
>>727,728
これは失礼。
> Exception 0xC0000005: Access violation at 0x14B4677.
> Call Tree
> 0x0CD1E0DA(=CG32.DLL:0x01:01D0DA)
> 0x0CD15098(=CG32.DLL:0x01:014098)

> 0x7C9624CA(=ntdll.dll:0x01:0214CA)
> 0x7C81CAAE(=kernel32.dll:0x01:01BAAE)
> 0x7C81CB26(=kernel32.dll:0x01:01BB26)
> 0x32B9C0C8(=CC32110MT.DLL:0x01:09B0C8)

> 0x32B98E4D(=CC32110MT.DLL:0x01:097E4D)
> 0x004017A9(=iterator2.exe:0x01:0007A9) iterator2.cpp#138
> 0x00403BFA(=iterator2.exe:0x01:002BFA) iterator2.cpp#163

これが何を意味するのかちょっとだけ教えていただけませんか?
確かに、#163->#138 ときて、そのあといきなり(>>725 の#75〜#123の間の、#97, #98, #109, #110 などを飛び越えて)スレッドセーフなランタイム?に入り、kernel32, nttdll まできてさらに下の得体のしれないところで例外が発生しているのでしょうか?

0x14B4677 というのはどこを指しているのでしょうか?
>>725 の #163 といえば、class BOOK { char *name; の解放になりますが、こちらの観測では二重解放もしていないようですし、いったい何が起こっているのでしょうか?

もしかして、#95- #96, #107-#108 の
for (i = 0; i < q->size; i++)
*(char *)((char *)(q->data) + i) = (char)(rand() & 0xff);
が悪いのか?