![]() |
1
1
尝试在fulldebugmode中使用fastmm运行应用程序。它看起来更像是/3rd-party lib代码中的一个bug——可能的内存覆盖/缓冲区溢出(大多数情况下,getmem对于unicodestring/string类似的操作来说太小了,它“有效”,但迟早会崩溃/av)。 在将大应用程序迁移到D2009时,我遇到过几个类似的情况,在大多数情况下,这是由于假设char=1字节造成的。有时会发生一些很奇怪的事情,但始终是完整的调试码帮助。异常是createProcessW,但它是已知/记录的行为。 如果应用程序覆盖了内存,那么当你释放内存时,fastmm会给你分配内存的异常,这样你就可以轻松地跟踪这个bug。它在分配的开始和结束时添加了一些字节,因此将知道它是否被覆盖。 我无法用新的/空的VCL项目复制它,您可以自己尝试(这个循环运行大约5分钟):
|