CSimpleStringT::LockBuffer
参照カウントを無効にし、バッファー内の文字列を保護します。
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