CSimpleStringT::LockBuffer
更新 : 2007 年 11 月
参照カウントを無効にし、バッファ内の文字列を保護します。
PXSTR LockBuffer( );
戻り値
CSimpleStringT オブジェクトまたは NULL で終わる文字列へのポインタ。
解説
CSimpleStringT オブジェクトのバッファをロックするには、このメソッドを呼び出します。LockBuffer を呼び出すと、文字列のコピーが生成されます。このコピーの参照カウントは –1 です。参照カウントの値が -1 の場合、バッファ内の文字列は "ロックされた" 状態であると認識されます。ロックされた状態の文字列は、次の 2 つの面で保護されます。
ロックされている文字列に割り当てられている文字列を含め、他の文字列は、ロックされた文字列データへの参照を取得できません。
ロックされた文字列にコピーされた文字列を含め、他の文字列は、ロックされた文字列データから参照されません。
バッファ内の文字列をロックすると、その文字列はバッファ内で排他的にそのままの状態で保持されます。
LockBuffer の使用後は、UnlockBuffer を呼び出して参照カウントを 1 にリセットしてください。
メモ : |
---|
ロックされているバッファに対して GetBuffer を呼び出す場合、GetBuffer のパラメータ nMinBufferLength に対象バッファのサイズを超える値を設定すると、バッファのロックは無効になります。その結果、現在のバッファは GetBuffer によって破棄され、要求されたサイズのバッファが新しく割り当てられると共に、参照カウントが 0 にリセットされます。 |
参照カウントの詳細については、次のトピックを参照してください。
Windows SDK の「Managing Object Lifetimes through Reference Counting」
Windows SDK の「Implementing Reference Counting」
Windows SDK の「Rules for Managing Reference Counts」
使用例
次の例は CSimpleStringT::LockBuffer の使い方を示しています。
CSimpleString str(_T("Hello"), pMgr);
TCHAR ch;
str.LockBuffer();
ch = str.GetAt(2);
_tprintf_s(_T("%c"), ch);
str.UnlockBuffer();
必要条件
ヘッダー : atlsimpstr.h