2009-07-08 6 views
5

Je reçois cette erreur est-ce que quelqu'un sait à ce sujet ??? 08/07/2009 18: 42: 36,778 [1297 FlashCards: 20b] Catégorie ID = 1 FlashCards (1297,0xa0690fa0) malloc: * erreur pour objet 0x4fd78a0: pointeur étant libéré n'a pas été alloué FlashCards (1297,0xa0690fa0) malloc: * erreur pour objet 0x4fdc200: double libération *** définir un point d'arrêt dans malloc_error_break pour déboguerest-il nécessaire de libérer un NSInteger dans iphone?

Répondre

16

non, un NSInteger n'est pas un objet; il est tout simplement un typedef pour un int (pour les applications 32 bits) ou un long (pour les applications 64 bits):

#if __LP64__ 
typedef long NSInteger; 
#else 
typedef int NSInteger; 
endif 
+0

parlez-moi de l'erreur comment puis-je trouver quel objet donne une erreur? –

+0

Eh bien, vous semblez appeler la libération sur un NSInteger que vous ne pouvez pas faire, parce que ce n'est pas un objet. –

3

NSInteger est un typedef pour un type primitif, et non un objet qui peut répondre à des méthodes comme conserver ou libérer. Même si son nom est similaire aux classes Cocoa comme NSNumber ou NSValue, il est traité comme int, float, etc.

+0

parlez-moi de l'erreur comment puis-je trouver quel objet donne une erreur? –

0

Le message d'erreur vous donne un bon conseil pour résoudre ce problème: définissez un point d'arrêt sur malloc_error_break. Dans Xcode, ouvrez la fenêtre des points d'arrêt (option-cmd-B). Dans le champ "Double-Click for Symbol", entrez malloc_error_break. Réexécutez votre application dans le débogueur (sélectionnez Déboguer dans le menu Exécuter). Le débogueur s'arrêtera au moment de l'erreur que vous avez signalée. J'examinerais la trace de la pile à ce point pour trouver où vous avez doublement libéré cette mémoire.

+0

définissez un point d'arrêt sur malloc_error_break. Dans Xcode, ouvrez la fenêtre des points d'arrêt (option-cmd-B). Dans le champ "Double-Click for Symbol", entrez malloc_error_break. Réexécutez votre application dans le débogueur (sélectionnez Déboguer dans le menu Exécuter) .please l'expliquer plus en détail .. où puis-je définir un point de rupture à malloc_error_break. –

+0

Dans Xcode, choisissez Run-> Show-> Breakpoints (dans le menu Run) ou appuyez simultanément sur les boutons option, cmd et B. Dans le panneau Breakpoints qui apparaît, double-cliquez dans la case "Double-Click for Symbol" et tapez "malloc_error_break" (sans guillemets). –

+0

quel est l'emplacement du point d'arrêt "malloc_error_break" –

Questions connexes