Junior — Middle
Explica el principio de funcionamiento del contador de referencias y su uso en la gestión de memoria
sobes.tech AI
Respuesta de la IA
El contador de referencias es un mecanismo de gestión de memoria en el que se mantiene un recuento de referencias activas a cada objeto. Cuando se crea una nueva referencia a un objeto, el contador aumenta, y cuando la referencia se elimina o se vuelve inaccesible, disminuye. Cuando el contador alcanza cero, el objeto se considera no utilizado y puede ser liberado de la memoria.
Este enfoque ayuda a gestionar automáticamente la duración de vida de los objetos, previniendo fugas de memoria. Sin embargo, el contador de referencias tiene una desventaja: no puede manejar correctamente referencias cíclicas, cuando los objetos se refieren entre sí pero no se usan desde el exterior.
Ejemplo de uso en C++:
class SharedPtr {
T* ptr;
int* ref_count;
public:
SharedPtr(T* p) : ptr(p), ref_count(new int(1)) {}
SharedPtr(const SharedPtr& sp) {
ptr = sp.ptr;
ref_count = sp.ref_count;
++(*ref_count);
}
~SharedPtr() {
if (--(*ref_count) == 0) {
delete ptr;
delete ref_count;
}
}
};