Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá povão do imaster!
estou estudando sobre gerenciamento de memoria com c++ (Collector Garbage, Pool Memory, Bitmap Memory, Alinhamento e etc..)
Criando minha classe Pool Memory, ela compartilha um único endereço.
assim:
class PoolMemory
{
void* UniqueMemory;
public:
PoolMemory()
{
UniqueMemory = calloc(1, 1);
}
void* AllocMemory(const size_t& stMemoryRequest)
{
printf("Using address %#X\n", UniqueMemory)
return UniqueMemory;
}
virtual ~PoolMemory()
{
//free( (char*)UniqueMemory );
}
};
tenho um objeto
class Employee
{
private:
std::string name;
int age;
double a, b, c, d, e, f;
public:
Employee(const std::string& n, const int& a) : name(n), age(a) {}
virtual void Say()
{
printf("Im %s and have %d year old!\n", name.data(), age);
}
virtual ~Employee(){}
};
meu main
int main(int argc, char** argv)
{
PoolMemory poolUnique;
Employee *on = new(poolUnique) Employee("Talisson", 23);
Employee *in = new(poolUnique) Employee("Bento", 40);
printf
(
"On: %#X\n"
"In: %#X\n"
,
on,
in
);
on->Say();
in->Say();
getc(stdin);
return 0;
}
Eu sei que notaram que meu calloc está alocando apenas 1 byte, mas o engraçado que isso funciona. É daí que vem minha dúvida, por que funciona?
não era para "quebrar" meu objeto?
lógico que pelo sim ou pelo não irei usar o sizeof(Employee).
Agradeço desde já!
Esqueci de mencionar que estou usando Windows 8.1 e Visual C++ 2013.
Se alguem tiver algum material, pde postar que será de grande ajuda :)
Por favor moderadores, desconsidere meu post.
Se possível deleta-lo.
Obrigado!