Xcode: NSZombie no detecta el error [duplicado]

Posible duplicado:
Error de malloc de Xcode

Mi juego fallaba a veces debido a este mensaje:

malloc: *** error for object 0x65cfcd4: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

Así que, como se me recomendó, ejecuté la herramienta Asignaciones en los instrumentos para intentar encontrar la fuga y seleccioné Habilitar la detección de NSZombie. Dijo que estaba buscando zombis durante la ejecución.

Pero la aplicación se bloquea y NADA se detecta.

¿Alguna razón por la que un zombi no lo atraparía?

Gracias.

preguntado el 27 de agosto de 11 a las 15:08

Parece que la memoria del objeto que desea liberar se sobrescribe con otra cosa. No puedes arreglar esto con los Zombies: el objeto todavía está allí, es solo que algo más lo estropeó. ¿Estás haciendo algo de puntero elegante? ¿C-Arrays sin comprobación de límites? ¿Fundición? -

2 Respuestas

El consejo no es habilitar zombies, los zombies son solo Objective-C y malloc, realloc y free son la forma C de asignar memoria, la herramienta zombie no detectará estos errores. Establecer un punto de interrupción en malloc_error_break y observe el seguimiento de la pila para resolver el error.

Respondido 27 ago 11, 19:08

Hola. He hecho esto, pero la pila no muestra nada útil. Ninguno de los métodos incluidos es mío. - FBryant87

Ok, espera, ahora muestra algunas cosas sobre cocos2d. - FBryant87

Sin ser demasiado elegante, puede eliminar todos sus free llamadas y ver si soluciona el problema. Si su proyecto no es a gran escala, esto puede ser más rápido que cualquier "herramienta profesional" que utilice. Si soluciona el problema, simplemente conecte el free llamadas una por una y la respuesta debería ser evidente.

Si usa cocos2d, simplemente elimine todas esas llamadas "Gratis". La asignación de memoria C es fácil de equivocarse.

Respondido 27 ago 11, 19:08

Estoy usando cocos2d, lo siento, ¿te refieres a eliminar todas las versiones? es bastante grande ... - FBryant87

Espera, ¿quieres que pierda memoria (posiblemente MUCHA memoria) en un dispositivo que no tiene intercambio de memoria y tiene una cantidad bastante limitada de memoria física? - JustSid

@JustSid Probablemente esté corriendo en el simulador. Si realmente le ayuda a encontrar el problema, ¿a quién le importa si rompemos temporalmente el dogma de la memoria libre? (No es que la pérdida de memoria sea más aceptable en las aplicaciones de escritorio, ya que cualquier proyecto que valga la pena es aceptable de todos modos). kizzx2

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.