it-swarm.com.de

Der Malloc-Fehler "Region kann nicht zugeordnet werden" ist mit Fehlercode 12 fehlgeschlagen.

ich bekomme diesen Fehler und weiß nicht, was ich damit machen soll:

AppName(3786,0xa0810540) malloc: *** mmap(size=16777216) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug

Wenn ich einen Haltepunkt auf diese Zeile gesetzt habe, bei dem der Fehler auftritt, weiß ich nicht, wonach ich speziell suchen muss. In Instrumenten habe ich die Allokationen überprüft und der Wert steigt bis auf 14,5 GB aller Allokationen. 

Kann mir jemand helfen?
brush51

EDIT 1:
Mehr Informationen:
- Ich versuche das im Simulator, nicht auf dem iOS-Gerät.
- Das ist die ganze Ausgabe (ich bekomme diesen Fehler mehrmals) .- Der Fehler tritt in dieser Zeile auf: 

NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchREntitySetsCards = [[[NSFetchRequest alloc] init] autorelease];
//NSFetchRequest *fetchREntityRelCardsAnswersNotes = [[[NSFetchRequest alloc] init] autorelease];

NSEntityDescription *entitySetsCards = [NSEntityDescription entityForName:@"EntitySetsCards" inManagedObjectContext:context];
//NSEntityDescription *entityRelCardsAnswersNotes = [NSEntityDescription entityForName:@"EntityRelCardsAnswersNotes" inManagedObjectContext:context];
setEntity:entityCard];
[fetchREntitySetsCards setEntity:entitySetsCards];
//[fetchREntityRelCardsAnswersNotes setEntity:entityRelCardsAnswersNotes];

NSArray *fetchedObjSetsCards    = [context executeFetchRequest:fetchREntitySetsCards error:&error];
//The error is here--->
//NSArray *fetchedObjRelCardsAnswersNotes   = [context executeFetchRequest:fetchREntityRelCardsAnswersNotes error:&error];


//Badges für TabBarItem Inbox setzen
setsCount = [context countForFetchRequest:fetchREntityUserSet error: &error];
cardsCount = [context countForFetchRequest:fetchREntityCard error: &error];
21
brush51

Googeln wird einige Tutorials zur Verwendung von Instrumenten zeigen, um zu verstehen, was mit Ihrem Gedächtnis los ist:

So beheben Sie Speicherverluste: ( Tutorial )
http://www.raywenderlich.com/2696/how-to-debug-memory-leaks-with-xcode-and-instruments-tutorial

Und ein anderer:
Auffinden von Obj-C-Speicherlecks ( video )
http://www.youtube.com/watch?v=R449qEuexNs&feature=related

* Es gibt viele ähnliche Fragen für Stackoverflow, von denen Sie profitieren könnten.

6
eric

Klingt seltsam, aber ich hatte das gleiche Verhalten, als der Haupt-Thread überlastet war. 

Die Speichernutzung war optimal genug: Die Instrumente zeigten keine Lecks und der Live-Speicher betrug etwa 2 MB, keine Speicherwarnungen, während auf einem Gerät ausgeführt wurde. Alle umfangreichen Zuweisungen erfolgten innerhalb von Pools für die automatische Freigabe. 

Es gab jedoch einen sehr großen Prozess des Speicherns von Daten in db (unter Verwendung von Kerndaten), die im Haupt-Thread erstellt wurden. Verschieben Sie einfach den Speichercode in den Hintergrundprozess wie folgt

dispatch_async(dispatch_get_global_queue
  (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  BOOL result = NO;
  result = [[DataManager sharedInstance] storeGuestsToDB];
  dispatch_async(dispatch_get_main_queue(), ^{
  //finalization
  }
}

mein Problem behoben.

10
Tamara

Ich hatte dieses Problem aufgrund eines rekursiven Aufrufs in der viewWillLayoutSubviews eines Ansichtscontrollers. Ich habe das Layout einer Sammlungsansicht ungültig gemacht, was zu einem endlosen Zyklus des wiederholten Anlegens von Ansichten führte.

0
JAL