La clase CString - Estructura interna

2 - Estructura interna

[editar]
Tutorial creado por Juan Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999


protected:
LPTSTR m_pchData;

El buffer al que apunta, se encuentra dentro de una estructura para uso privado de la clase CString: la estructura CStringData, que en ciertas ocasiones se comparte entre varios objetos CString. Esta estructura se define como:

struct CStringData
{
long nRefs; nº de objetos CString que comparten esta estructura
int nDataLength;
longitud de la cadena (contando con el '\0')
int nAllocLength; longitud del buffer reservado

TCHAR* data()
retorna un puntero a la cadena
{
return (TCHAR*) (this+1);
}
};

El cometido de esta estructura es doble: por un lado realizar la gestión de referencias, almacenando un contador (nRefs) que gestiona el número de objetos CString que utilizan la misma estructura CStringData.

Por otro lado, gestionar una caché interna para almacenar los caracteres.
De este modo, cuando creamos un CString para almacenar 10 caracteres, en realidad el buffer interno ha reservado espacio para 64, aunque sólo utilice 10. Si después concatenamos 20 nuevos caracteres, no tenemos que reservar un nuevo bloque de memoria, ya que el buffer inicial cuenta con espacio suficiente para la nueva cadena (de 30 caracteres). En caso de sobrepasarse el límite del buffer, se direcciona un nuevo espacio de un tamaño superior al necesitado, aplicando un crecimiento exponencial (64, 128, 256, 512, 1024...)

Tanto el contador de referencias, como el buffer interno, se acceden continuamente desde distintos métodos de la clase, aunque no vamos a profundizar demasiado en este aspecto.
[editar]

3 opiniones

sexo

creo k l sxo no solo s bsa n tenr rlaciones sino poder espresar los sentimintos de formee exotik y tod eso
Ayuda.

Como paso un cstrin a char en visual. Net.
Regular.

Es algo util este curso pero le falta, pero si me ayudo un poco

gracias.

Tutoriales relacionados con 'La clase CString'

Este curso profundiza en la implementación de la clase CString dentro del framework MFC. Se... Más »
Este es el diario de Peter Class sobre sus dias aprendizaje de una disciplina de... Más »

Autor y licencia de 'La clase CString'


Tutorial de Juan Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.