Articles of gestión de memoria

¿Cuál es la diferencia entre una referencia __weak y __block?

Estoy leyendo la documentación de Xcode, y aquí hay algo que me desconcierta: __block typeof(self) tmpSelf = self; [self methodThatTakesABlock:^ { [tmpSelf doSomething]; }]; Lo siguiente se copia de la documentación: Un bloque forma una fuerte referencia a las variables que captura. Si usas self en un bloque, el bloque forma una fuerte referencia a […]

¿Este tipo de memoria se asigna en el montón o la stack?

En el contexto de C ++ (no es que importe): class Foo{ private: int x[100]; public: Foo(); } Lo que he aprendido me dice que si creas una instancia de Foo así: Foo bar = new Foo(); Entonces la matriz x se asigna en el montón, pero si creaste una instancia de Foo así: Foo […]

Capacidad inicial del vector en C ++

¿Cuál es la capacity() de un std::vector que se crea utilizando el constructor predeterminado? Sé que el size() es cero. ¿Podemos decir que un vector construido por defecto no llama a la asignación de memoria de stack? De esta forma, sería posible crear una matriz con una reserva arbitraria utilizando una única asignación, como std::vector […]

gfortran para dummies: ¿Qué hace mcmodel = medium exactamente?

Tengo un código que me está dando errores de reubicación al comstackr, a continuación se muestra un ejemplo que ilustra el problema: program main common/baz/a,b,c real a,b,c b = 0.0 call foo() print*, b end subroutine foo() common/baz/a,b,c real a,b,c integer, parameter :: nx = 450 integer, parameter :: ny = 144 integer, parameter :: […]

malloc implementación?

Estoy intentando implementar malloc y free C, y no estoy seguro de cómo reutilizar la memoria. Actualmente tengo una struct que se ve así: typedef struct _mem_dictionary { void *addr; size_t size; int freed; } mem_dictionary; Mi malloc ve así: void *malloc(size_t size) { void *return_ptr = sbrk(size); if (dictionary == NULL) dictionary = sbrk(1024 […]

¿Cuáles son algunas de las mejores prácticas de administración de memoria de Java?

Estoy tomando algunas aplicaciones de un desarrollador anterior. Cuando ejecuto las aplicaciones a través de Eclipse, veo que el uso de la memoria y el tamaño del almacenamiento dynamic aumentan mucho. Tras una investigación más a fondo, veo que estaban creando un objeto una y otra vez en un bucle, así como otras cosas. Empecé […]

¿Por qué / cuándo usar `intptr_t` para el moldeado de texto en C?

Tengo una pregunta sobre el uso de intptr_t contra long int . He observado que el aumento de las direcciones de memoria (por ejemplo, a través de la aritmética del puntero manual) difiere según el tipo de datos. Por ejemplo, incrementar un puntero de char agrega 1 a la dirección de memoria, mientras que incrementar […]

¿Qué debo hacer exactamente en viewDidUnload?

Tiendo a publicar mis cosas en -dealloc, y ahora iPhone OS 3.0 introdujo este método divertido -viewDidUnload, donde dicen: // Libera cualquier subvista retenida de la vista principal. // eg self.myOutlet = nil; Entonces -viewDidUnload parece ser llamado cuando la vista del controlador de vista ha sido arrancada de la memoria. Y si tengo subvistas […]

Tamaño de stack y memoria de stack

Posible duplicado: ¿Qué y dónde están la stack y el montón? Con respecto a los conceptos básicos del diseño de la memoria en el progtwig de CA, entiendo que: El lenguaje usa dos estructuras de datos primarios, stack y heap . Stack se crea para almacenar las variables locales y los datos de contabilidad de […]

¿Cómo funciona el mecanismo de recolección de basura?

En una terminología de hombre común, ¿cómo funciona el mecanismo de recolección de basura? ¿Cómo se identifica que un objeto está disponible para la recolección de basura? Además, ¿qué significa Reference Counting, Mark and Sweep, Copying, Train en algoritmos GC?