J'ai deux questions:Existe-t-il un allocateur qui utilise alloca et est compatible CML STL?
1) Est-il possible d'implémenter un allocateur qui utilise alloca pour allouer de la mémoire sur la pile et est compatible CML STL?
S'il y a du code là-bas, vous pouvez me rendre heureux en me dirigeant simplement vers l'URL. :-) S'il n'y a pas de code là-bas, peut-être vous pouvez esquisser les fonctions allouer et désallouer?
2) Si la réponse à la question ci-dessus est «oui», j'aimerais comprendre comment il est possible d'allouer de la mémoire sur la pile pour les membres de la classe. À titre d'exemple, envisager une
std::vector<int, AllocaAllocator<int> >
et supposons qu'un appel de la fonction membre « resize » de ce vecteur appelle d'abord « deallocate », puis « attribuer » de l'allocateur.
L'étendue à partir de laquelle allocate est appelée est celle de la fonction membre resize. Cela ne signifie-t-il pas que la mémoire allouée est retirée de la pile à la fin de cet appel de fonction?
Cordialement, Bjoern
Vous ne pouvez pas libérer l'espace que vous avez alloué sur la pile via alloca. La seule façon d'obtenir de la mémoire allouée par alloca est de quitter la fonction. – Patrick
Cela signifie-t-il que, si vous quittez une fonction, toute la mémoire allouée dans cette fonction sur la pile via alloca est libérée? Et cela implique-t-il qu'il est impossible d'utiliser alloca pour allouer de la mémoire aux membres de la classe? Ainsi, est-il impossible d'écrire un allocateur qui utilise alloca? – Bjoern
Jetez un oeil à cette question: "Rechercher une classe de vecteurs de type STL C++ mais en utilisant le stockage de pile" (http://stackoverflow.com/q/354442) Il existe déjà quelques commentaires utiles sur ce sujet. –