Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;
class Item{
    private:
        int x;
    public:
};

class Object {
    private:
        Item *I;
    public:
        Object(){
            I = new Item[100];
            cout << sizeof(I)<< endl;
        };
};

int main() {
    Object o;
    cout << sizeof(o)<< endl;
    cin.get();
    return 0;
}


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:
Cita de: Xafi en 20 Agosto 2012, 00:52 AMLas 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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;
class Item{
    private:
        int x;
    public:
};

class Object {
    private:
        Item *I;
    public:
        Object(){
            I = new Item[100];
            cout << sizeof(I)<< endl;
        };
};

int main() {
    Object o;
    cout << sizeof(o)<< endl;
    cout << sizeof(Object) << endl;
    cout << sizeof(Item) << endl;
    cin.get();
    return 0;
}