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.
#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
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.
okis lo mirare por la mañana. avesudra cualquier cosa dímelo gracias.
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
mmhh todas me dan 4 bytes.
#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;
}