Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TalissonBento

Pool Memory e UniqueMemory

Recommended Posts

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 :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.