Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 20 Agosto 2012, 00:52 am



Título: Duda sobre consumo de memoria
Publicado por: anonimo12121 en 20 Agosto 2012, 00:52 am
Hola buenas, estoy investigando sobre el consumo de memoria de mis programas, y bueno he dado con una duda y es la siguiente, Cuanta memoria consume mi clase.

Código
  1. #include <iostream>
  2. using namespace std;
  3. class Item{
  4.    private:
  5.        int x;
  6.    public:
  7. };
  8.  
  9. class Object {
  10.    private:
  11.        Item *I;
  12.    public:
  13.        Object(){
  14.            I = new Item[100];
  15.            cout << sizeof(I)<< endl;
  16.        };
  17. };
  18.  
  19. int main() {
  20.    Object o;
  21.    cout << sizeof(o)<< endl;
  22.    cin.get();
  23.    return 0;
  24. }

Las dos salidas dan 4 bytes.
alguien me puede explicar esto si estoy reservando 100 en la array.

saludos


Título: Re: Duda sobre consumo de memoria
Publicado por: avesudra en 20 Agosto 2012, 01:51 am
Buscando en internet , dato curioso Xafi , te aviso si encuentro algo.
Mira esto http://www.cprogramming.com/tutorial/size_of_class_object.html
Parece que hay que sumarlo todo , el operador sizeof parece que te da el tamaño de el objeto pero me parece que este es como si fuese un puntero.


Título: Re: Duda sobre consumo de memoria
Publicado por: anonimo12121 en 20 Agosto 2012, 02:05 am
okis lo mirare por la mañana. avesudra cualquier cosa dímelo gracias.


Título: Re: Duda sobre consumo de memoria
Publicado por: rir3760 en 20 Agosto 2012, 03:36 am
Para la pregunta en lo general ¿Que aplica en el tamaño de un objeto en C++? solo tienes que revisar la pagina indicada cortesía de avesudra.

Y sobre tu pregunta en concreto:
Las dos salidas dan 4 bytes.
alguien me puede explicar esto si estoy reservando 100 en la array.
Ello se debe a que estas calculando el tamaño de un puntero (la variable "I" es de tipo "Item *"), deberías utilizar "sizeof(Item)".

Un saludo


Título: Re: Duda sobre consumo de memoria
Publicado por: anonimo12121 en 20 Agosto 2012, 11:19 am


mmhh todas me dan 4 bytes.
 
Código
  1. #include <iostream>
  2. using namespace std;
  3. class Item{
  4.    private:
  5.        int x;
  6.    public:
  7. };
  8.  
  9. class Object {
  10.    private:
  11.        Item *I;
  12.    public:
  13.        Object(){
  14.            I = new Item[100];
  15.            cout << sizeof(I)<< endl;
  16.        };
  17. };
  18.  
  19. int main() {
  20.    Object o;
  21.    cout << sizeof(o)<< endl;
  22.    cout << sizeof(Object) << endl;
  23.    cout << sizeof(Item) << endl;
  24.    cin.get();
  25.    return 0;
  26. }