1

2 つのスレッド間で共有されるクリティカル セクションがあります。

TCriticalSection        lock_measDataBuff;

この変数をグローバルとして宣言しました。Delphi スタイルのクラスは new 演算子を使用して構築する必要があるため、上記の宣言を次のように変更しました。

TCriticalSection        *lock_measDataBuff;

演算子 new を使用してロック変数を初期化するのに最適な場所はどこですか? operator delete を使用してグローバル変数をファイナライズするのに最適な場所はどこですか? それは WinMain メソッドである必要がありますか? ロック変数にアクセスするクラスの 1 つのコンストラクター? またはコード内の他の場所ですか?

4

2 に答える 2

2

私はあなたのためにそれらすべてを使用std::auto_ptrまたは処理します。boost::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 に答える