class Texture { public: Texture (const char* path) { this->refCount = malloc (sizeof (*this->refCount)); // compteur partagé du nombre de références sur cette textures *this->refCount = 1; this->imageData = new char [...]; // charger l'image "path" dans this->image_data } Texture (const Texture& texture) { this->refCount = texture.refCount; // on récupère le compteur partagé pour compter une nouvelle référence ++*this->refCount; this->imageData = texture.imageData; } ~Texture () { if (--*this->refCount == 0) // si le compteur arrive à 0, alors plus aucun objet ne référence cette texture, { delete [] this->imageData; // on peut donc l'effacer pour de bon free (this->refCount); // sans oublier de supprimer également le compteur } } private: char* imageData; int* refCount; }