Cocoa fournit des zones de mémoire alignées sur les pages qu'il appelle Memory Zones, et fournit quelques fonctions de gestion de la mémoire qui prennent une zone comme argument.Avez-vous déjà utilisé NSZoneMalloc() au lieu de malloc()?
Supposons que vous ayez à allouer un bloc de mémoire (pas pour un objet, mais pour des données arbitraires). Si vous appelez malloc(size)
, le tampon sera toujours alloué dans la zone par défaut. Cependant, quelqu'un peut avoir utilisé allocWithZone:
pour allouer votre objet dans une autre zone en plus de la valeur par défaut. Dans ce cas, il semblerait préférable d'utiliser NSZoneMalloc([self zone], size)
, ce qui maintient votre tampon et votre objet propriétaire dans la même zone de mémoire.
Suivez-vous cette pratique? Avez-vous déjà utilisé des zones de mémoire?
Mise à jour: Je pense que Stack Overflow a tendance à répondre aux questions sur les sujets de bas niveau avec un cours sur l'optimisation prématurée. Je comprends que les zones ont probablement plus d'importance en 1993 sur le matériel NeXT qu'aujourd'hui, et une recherche sur Google montre clairement que pratiquement personne ne les concerne. Je demande quand même, pour voir si quelqu'un pourrait décrire un projet où ils ont utilisé des zones de mémoire.
Je n'ai jamais vraiment vu l'avantage des zones de mémoire non plus, alors je suis content que vous ayez posé cette question. – Alex