我有一个带有两个线程的delphi7程序。如果我使用new()在第一个线程中分配内存,我可以在另一个线程中使用dispose释放它吗?我也在使用fastMM
答案 0 :(得分:6)
是。动态内存在进程中的所有线程之间共享。
您必须确保_links
全局变量在早期设置为IsMultiThread
。使用True
或TThread
创建线程会将BeginThread
设置为IsMultiThread
。如果您知道您的代码使用了线程,那么您也可以在初始化期间明确地将True
设置为IsMultiThread
。
显然,在开始重新分配之前必须完成分配。
答案 1 :(得分:4)
是的,所有线程都可以访问当前进程的所有内存。但是你绝对应该确保这些调用不是同时进行的,或者不是以错误的顺序进行,因为很容易用多个执行时间不可预测的线程完成。