Duda sobre consumo de memoria

Iniciado por anonimo12121, 20 Agosto 2012, 00:52 AM

0 Miembros y 1 Visitante están viendo este tema.

anonimo12121

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
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

avesudra

#1
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.
Regístrate en

anonimo12121

okis lo mirare por la mañana. avesudra cualquier cosa dímelo gracias.
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

anonimo12121



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;
}
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746