想想看,下面的代码为啥会出Access Volation 错误?

一段很简单的Delphi 代码,你编译后,如果运行会出现 Access Volation 错误:

 

[技巧] DLL 中使用多线程的一点提示

在 Delphi 或 C++ Builder 中,如果你使用 TThread 的子类实现多线程,如果你在 DLL 卸载前,没有单独提前终止线程,可能会造成 DLL 锁死无法退出。查看线程的栈和主线程的栈,你会发现两者相互等待,处于死锁状态。所以,正确的做法是在主程序退出前,如主窗体的 OnClose 里,调用 DLL