CSimpleStringT::LockBuffer
Contagem de referência desativa e protege a cadeia de caracteres em buffer.
PXSTR LockBuffer( );
Valor de retorno
Um ponteiro para um objeto de CSimpleStringT ou cadeia de caracteres NULL- finalizada.
Comentários
Chamar esse método para bloquear o buffer de objeto de CSimpleStringT .Chamando LockBuffer, você cria uma cópia da cadeia de caracteres, com A-1 para a contagem de referência.Quando o valor de contagem de referência é -1, a cadeia de caracteres em buffer é considerada estar em um estado “bloqueado”.Quando em um estado bloqueado, a cadeia de caracteres é protegida de duas maneiras:
Nenhuma outra cadeia de caracteres pode obter uma referência para os dados na cadeia de caracteres com barreira, mesmo se essa cadeia de caracteres é atribuído à cadeia de caracteres bloqueado.
A cadeia de caracteres com barreira nunca referenciará outra cadeia de caracteres, mesmo se outra cadeia de caracteres é copiado para a cadeia de caracteres bloqueado.
Bloqueando a cadeia de caracteres em buffer, você garante que a propriedade exclusiva de cadeia de caracteres em buffer. ele permaneça intacto
Depois que terminar com LockBuffer, chamada UnlockBuffer para redefinir a contagem de referência para 1.
Observação |
---|
Se você chamar GetBuffer em um buffer e você bloqueados define o parâmetro nMinBufferLength de GetBuffer maior do que o comprimento atual do buffer, você perderá o bloqueio de buffer.Tal chamada a GetBuffer destrói o buffer atual, substituí-lo com um buffer de tamanho requerido, e redefinir-lo contagem de referência para zero. |
Para obter mais informações sobre a contagem de referência, consulte os seguintes artigos:
Gerenciando o tempo de vida de objeto com contagem de referência em Windows SDK
Implementando a contagem de referência em Windows SDK
Regras para gerenciar as contagens de referência em Windows SDK
Exemplo
O exemplo a seguir demonstra o uso de CSimpleStringT::LockBuffer.
CSimpleString str(_T("Hello"), pMgr);
TCHAR ch;
str.LockBuffer();
ch = str.GetAt(2);
_tprintf_s(_T("%c"), ch);
str.UnlockBuffer();
Requisitos
Cabeçalho: atlsimpstr.h