Récemment, j'ai examiné du code source tiers, qui impliquait certains types de données dans le framework Core Foundation, et j'ai rencontré des plantages de gestion de la mémoire. J'ai oublié beaucoup de choses sur la voix C. J'espère obtenir des conseils du maître ici.
Question :
//在网上例子上看到的这种方式创建的一个CFString的数组
CFStringRef keys[2];
keys[0] = CFSTR("key1");
keys[1] = CFSTR("key2");
//所以Core Foundation框架中的对象都不支持ARC,需要手动释放
CFRelease(keys);
Tant qu'il fonctionne, le crash suivant se produira
Mais j'ai essayé le code ci-dessous, créé un CFStringRef puis l'ai publié manuellement, ce n'était pas un problème
CFStringRef aSTR = CFSTR("A STRING");
CFRelease(aSTR);
En fait, je suis assez confus quant à la méthode de création de tableaux que je vois sur Internet. J'ai vérifié sur Internet l'utilisation du framework Core Foundation, mais il y en a encore relativement peu, et je ne sais pas par où commencer.
En attente en ligne, en espérant obtenir une réponse efficace, merci~
keys est une variable de pointeur et est stockée dans la pile. Elle n'a pas besoin d'être libérée manuellement.
.keys[0] key[1] est CFStr et doit être libérée manuellement