[C con Clase] Buenos días a todos - más preguntas de novato - uso de memoria por un programa

Davidson, Steven srd4121 en njit.edu
Vie Mar 20 21:51:15 CET 2015


Hola Miguel Ángel,

2015-03-20 15:37 GMT-04:00 Miguel Ángel Torres Fernández-Píñar <
miguelangeltorresfp en gmail.com>:

> jajaja.......Steven, me haces rascarme la cabeza.....( gracias )
>
>
De nada :)

ok, pero en el caso de que tuviéramos :
>
>
[CORTE]

Dónde se guardaría el objeto b ???
>

La respuesta viene a ser la misma. Desde el punto de vista de memoria,
estos objetos ('b', 'a', y 'name') realmente no existen como tales.

Lo que sí ocupará memoria es la representación interna de 'string' que
contendrá algunas constantes, que posiblemente no ocuparán memoria, al
igual que algunos otros miembros como los tamaños actual y máximo. Por
supuesto, necesita representar la cadena dinámica de caracteres; o bien
define un puntero a 'char' directamente, o bien un objeto, que internamente
represente un puntero a 'char'. Al final, lo que se guarda en memoria es
algo así,

Dirección de
Memoria            Valor
---------------------------------------------
0x00AADD00      32                    <-- cantidad actual de 'char'
0x00AADD04      128                  <-- cantidad reservada: la máxima, por
ahora
0x00AADD08      0x44FFAA00    <-- puntero al primer carácter de la cadena
(dinámica), el cual se guarda en el montículo en la dirección: 0x44FFAA00
...

Puedes hacer esta comprobación, si defines los miembros públicamente:

cout << "b = " << &b << endl;
cout << "b.a = " << &b.a << endl;
cout << "b.a.name = " << &b.a.name << endl;

Verás que coinciden en la misma dirección de memoria.


Espero que vaya aclarando el tema.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20150320/4a1a7800/attachment.html>


Más información sobre la lista de distribución Cconclase