¿Qué es exactamente el recuento de referencias? En particular, ¿qué es para C++? ¿Cuáles son los problemas que podemos enfrentar si no los manejamos? ¿Todos los idiomas requieren conteo de referencia?¿en qué consiste exactamente el recuento de referencias en C++ ?,
Respuesta
La recolección de basura de recuento de referencias es una poderosa técnica para administrar la memoria que ayuda a evitar que los objetos se eliminen accidentalmente o más de una vez. La técnica no se limita al código C++ y, a pesar de su nombre, no está relacionada con el concepto de C++ de las variables de referencia. Por el contrario, el término significa que mantenemos un recuento de todas las "referencias propietarias" de un objeto y eliminamos el objeto cuando este recuento se convierte en cero.
El recuento de referencias es un enfoque simple pero no completo para la detección de basura.
Cuando el contador llega a cero, puede liberar ese objeto.
pero si ya no hay más objetos usados que hacen referencia entre sí cíclico, que nunca serán liberados
considerar un referencias b, b referencias una, pero nada más referencia aob. La referencia cuenta con a y b seguirá siendo 1 (= en uso)
Estrictamente hablando, no es "recolección de basura" cuando tiene recursos contados de referencia, ya que no hay basura. Basura es lo que obtienes * después * se han perdido todas las referencias. C++ generalmente no produce basura. (A diferencia de los programadores C++ *, quizás). –
Correcto, es por eso que utilicé el término DETECCIÓN de basura –
. Sin embargo, ¡no es "basura"! –
Recuento de referencias: permite usar una metáfora.
Tienes un oído. Lo quieres de regreso en algún momento.
Tienes un grupo de personas que te apuntan a la oreja. Usted los cuenta tan pronto como señalan.
Cuando el número llega a cero, es solo tuyo y puedes hacerlo como desees.
I.e. sacarlo de la ecuación (liberarlo a la memoria).
BTW. Las cosas circulares son difíciles de detectar.
"Tienes oído. Lo quieres de regreso en algún momento". Bueno, ya lo tengo, no hay necesidad de querer recuperarlo. También es mi oído cuando una docena de personas lo señalan. Metáfora defectuosa – Evert
¿Qué es exactamente el recuento de referencias? En particular, ¿qué es para C++?
En palabras simples, el recuento de referencias significa contar las referencias a un objeto. Por lo general, C++ emplea la técnica de RAII. Donde, la capacidad de gestionar la desasignación de un objeto tipo está vinculada dentro del objeto tipo. Significa que el usuario no tiene que administrar explícitamente la duración del objeto y su desasignación de manera explícita. La funcionalidad para hacer esta gestión está construida en el objeto mismo.
Esta funcionalidad significa que el objeto debe existir y seguir siendo válido hasta que haya interesados que se refieren al objeto, y esto se logra mediante el recuento de referencias. Cada vez que el objeto es compartido (copiado) el recuento de referencias (normalmente un miembro dentro del tipo de clase) se incrementa y cada vez que se llama al destructor el conteo disminuye, cuando el conteo llega a 0, el objeto no es referido por nadie y marca el final de su vida y por lo tanto está destruido.
¿Cuáles son los problemas que podemos enfrentar si no los manejamos?
Significaría que no habría más RAII y una gestión de recursos manual interminable y con frecuencia defectuosa.
En breve pesadillas de programación.
¿Todos los idiomas requieren recuento de referencias?
idiomas no requieren recuento de referencias, pero empleando la técnica proporciona un uso muy fácil y menos esfuerzos para que los usuarios de la lengua, así que la mayoría de los idiomas prefieren utilizarlo para proporcionar estas ventajas a sus usuarios.
- 1. Recuento de referencias en C++
- 2. Objetivo c: recuento de referencias
- 3. ¿Qué tipo de fugas evita o minimiza el recuento automático de referencias en Objective-C?
- 4. ¿IUnknown :: QueryInterface() incrementa el recuento de referencias?
- 5. ¿En qué consiste IIS y cómo funciona?
- 6. ¿Cómo funciona el recuento de referencias de un puntero inteligente de recuento de referencias?
- 7. NSThreads en el recuento automático de referencias (ARC)
- 8. Cadenas de Delphi y recuento de referencias
- 9. NSInvocación y ARC (recuento automático de referencias)
- 10. Punteros inteligentes y recuento de referencias en Java
- 11. Recuento de referencias para los objetos
- 12. ¿Qué es exactamente súper en Objective-C?
- 13. Cómo deshabilitar el recuento automático de referencias de Xcode4.2
- 14. Dependencias y referencias: ¿a qué debería hacer referencia exactamente?
- 15. ¿A qué se refiere exactamente el término "bucle vacío" en C y C++?
- 16. Fuga en instrumentos, recuento de referencias y Autorelease
- 17. Aclaración de referencias en C++
- 18. ¿Cómo activar/desactivar el "Recuento automático de referencias"?
- 19. Deshabilitar el recuento automático de referencias para algunos archivos
- 20. ¿Por qué Python utiliza el recuento de referencias y el marcado y barrido para gc?
- 21. referencias en C++ problema
- 22. ¿Por qué Python mantiene un recuento de referencias en falso y verdadero?
- 23. ¿Qué es exactamente una construcción en JavaScript?
- 24. Descripción del recuento de referencias de la variable de clase
- 25. ¿Qué es exactamente una regla de definición en C++?
- 26. ¿Referencias a variables en C#?
- 27. ¿Qué son exactamente las "tareas" en el RBAC de Yii?
- 28. ¿Qué es la tabla de proceso de Linux? ¿En qué consiste?
- 29. ¿Qué estoy incrustando exactamente cuando uso WebKit en C#?
- 30. ¿Qué hace ReferenceLoopHandling.Ignore en Newtonsoft.json exactamente?
Empieza a leer [aquí] (http://www.gotw.ca/gotw/043.htm). – Xeo
"El recuento de referencias es una optimización común (también llamada" copia diferida "y" copia en escritura ")." - Herb Sutter. WTF? El recuento de referencias definitivamente * no * es lo mismo que "copia diferida" o "copia en escritura". Recuento de referencia (típicamente) para la gestión de memoria. No es una optimización per-se. –
La [página de wikipedia sobre recuento de referencias] (http://en.wikipedia.org/wiki/Reference_counting) es una muy buena introducción al tema. –