1

我有一个在两个线程之间共享的关键部分:

TCriticalSection        lock_measDataBuff;

我已将此变量声明为全局变量。现在因为 Delphi 风格的类必须使用 operator new 来构造,所以我将上面的声明修改如下:

TCriticalSection        *lock_measDataBuff;

使用 operator new 初始化锁变量的最佳位置在哪里?使用 operator delete 完成全局变量的最佳位置在哪里?应该是 WinMain 方法吗?访问锁变量的类之一的构造函数?还是代码中的其他地方?

4

2 回答 2

2

我会使用std::auto_ptrboost::unique_ptr为您处理所有这些,例如:

#include <memory>

std::auto_ptr<TCriticalSection> lock_measDataBuff(new TCriticalSection);
于 2012-12-18T19:15:09.470 回答
1

在创建全局变量时,您需要在创建线程之前进行初始化,这将是主线程,释放内存的最佳位置是线程结束后

于 2012-12-18T09:33:51.620 回答