2011-10-03 3 views
1

Je développe une application pour obtenir la liste des logiciels installés dans Mac OS X 10.5 ou supérieur. Le programme est créé en utilisant objective-C++ (c, C++, obj-c). Chaque fois que je lance le programme, il plante.Le programme créé objectif C++ se bloque

int main (int argc, const char * argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
    //My part of coding 
    [pool drain]; // This is the crash prone place 
    return 0; 
} 

Ici, je suis fournissant des détails de réglage du projet:

fichier extention: .mm

compilés comme: c objectif ++

objc GC: non pris en charge

bibliothèques utilisées : libxml2.2.dylib, Foundation Framework

cible platfom: x86_x64

développement

: Mac OS X 10.6.8, Xcode 3.2.6

Type d'application: application console

Je ne sais pas d'autre option besoin de mettre à compilez l'objectif C++. Toute aide à ce sujet serait appréciée.

oui. Je l'ai déjà mis sdk de base 10,5

Voici la trace du journal:

Le Debugger a quitté avec le statut 0. [session a commencé à 2011-10-03 22:29:25 0530.] GNU gdb 6.3.50-20050815 (version Apple gdb-1515) (Sat 15 jan 08:33:48 UTC 2011) Copyright 2004 Free Software Foundation, Inc. GDB est un logiciel libre, couvert par la GNU General Public License, et vous êtes invités à le changer et/ou à en distribuer des exemplaires sous certaines conditions. Tapez "show copy" pour voir les conditions. Il est absolument pas de garantie pour GDB. Tapez "show warranty" pour plus de détails. Ce GDB a été configuré comme "x86_64-apple-darwin" .tty/dev/ttys003 Chargement du programme dans le débogueur ... Programme chargé. run [Passage au process 2973] Exécution en cours ... Signal reçu du programme: "EXC_BAD_ACCESS". sharedlibary applique-load-rules all (gdb)

J'ai une autre question. Est-il valide de libérer l'objet obj-c dans C++ class destructor? {* Myobjcinterface myobjc = [[myobjcinterface alloc] init] comme celui-ci

maclasse :: myclasss(); }

myclass :: ~ myclass() {[version myobjc]; }

+0

Vous devez définir votre SDK de base sur 10.5. –

+0

Pouvez-vous publier le message d'erreur que vous recevez avec le code, cela facilitera le suivi. –

Répondre

1

J'ai une autre question. Est-il valide de libérer l'objet obj-c dans C++ class destructor? comme ceci

Oui.

Quant à votre EXC_BAD_ACCESS, si elle est hapening sur drain d'une piscine autorelease, il est presque certain que vous avez quelque chose autoreleased relâcha, et, la piscine tente de libérer un pointeur ballants. Essayez de définir la variable d'environnement NSZombieEnabled sur YES puis d'exécuter votre programme. Il devrait vous donner des diagnostics sur les sur-libérations.

Questions connexes