Strano comportamento in IOS durante l'integrazione con una libreria c/C++.IOS rimuove la memoria allocata nella libreria nativa
In AppDelegate io chiamo
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^{
[[ABCService sharedInstance] abcInitialize];
});
abcInitialize è definito nella libreria C++
struct abc *top;
top = calloc(TYPE_SERV,size_of(struct abc));
top->us = server_alloc (...certain_params...);
all'interno di allocazione di server faccio allocazione di strutture struct1 e struct2 e poi in funzione Initialize i prova ad accedere a
top->us = calloc(TYPE_US, size_of(struct us));
if(top->us->struct1) //do something
ho notato che il mio struct1 è sempre nullo
Quando sono il debug, posso vedere che la struttura è stata allocata fine e valori sono impostati in modo appropriato, ma prima di ritornare dalla funzione, la memoria si rilascia automaticamente. Questo è totalmente confuso e fastidioso. Qualcuno potrebbe aiutarmi a capire cosa sta succedendo?
ho provato spegnendo ARC troppo, ancora nessun cambiamento
È necessario mostrare come viene allocata struct1 e come viene dichiarata. – bbum
stuct1 viene assegnato come calloc (1, stuct1_size); – blganesh101
Immagino sia necessario mostrare come abcInitialize: è come. Perché nel tuo codice attuale non si alloca memoria per il puntatore 'top' ma si assegna qualcosa al membro' us' (top-> us = ...). –