在Delphi7中在不同的线程中分配和释放内存

时间:2016-05-26 18:02:23

标签: multithreading delphi memory-management

我有一个带有两个线程的delphi7程序。如果我使用new()在第一个线程中分配内存,我可以在另一个线程中使用dispose释放它吗?我也在使用fastMM

2 个答案:

答案 0 :(得分:6)

是。动态内存在进程中的所有线程之间共享。

您必须确保_links全局变量在早期设置为IsMultiThread。使用TrueTThread创建线程会将BeginThread设置为IsMultiThread。如果您知道您的代码使用了线程,那么您也可以在初始化期间明确地将True设置为IsMultiThread

显然,在开始重新分配之前必须完成分配。

答案 1 :(得分:4)

是的,所有线程都可以访问当前进程的所有内存。但是你绝对应该确保这些调用不是同时进行的,或者不是以错误的顺序进行,因为很容易用多个执行时间不可预测的线程完成。