Existe-t-il un moyen de définir une macro (ou quelque chose de similaire) qui permettrait aux objets d'être alloués sur la pile ou sur le tas, proprement?Modèle C/C++ à USE_HEAP ou USE_STACK
par ex. Code actuel:
A a;
a.someFunc();
La suggestion la plus simple pourrait être la suivante, mais comme vous pouvez le voir ci-dessous, il est pas très propre pour maintenir 2 ensembles de code.
#ifdef USE_STACK
A a;
a.someFunc();
#elseif USE_HEAP
A* a = new A();
a->someFunc();
#endif
Je cherche un modèle de conception/classe proxy qui peut être utilisé pour compiler le code ou l'autre manière, en fonction des besoins de nos clients.
Éditer: Le code est utilisé pour construire une bibliothèque pour périphérique embarqué/(intégré) Linux/Windows Mobile. La plupart des clients souhaitent uniquement une allocation par pile. Quelques autres ont demandé d'échanger la pile contre le tas.
Merci, Charles
Cela semble vraiment bien, Evan. Existe-t-il un moyen d'encapsuler ceci dans la classe A? Il serait plus facile de changer une classe que de mettre à jour tout le code client comme indiqué ci-dessus. – Charles
Eh bien, pour ce faire, vous utilisez un modèle d'usine. Fondamentalement, vous ajoutez une fonction statique à A qui renvoie HeapWrapper ou quelque chose comme ça. Malheureusement, il faudrait encore changer tout le code qui crée l'objet de A. Pas vraiment une énorme différence dans le nombre de changements que vous auriez à faire. –
Aussi, pourquoi quelqu'un at-il déprécié cela? C'est une amélioration par rapport à la réponse actuellement votée la plus haute ... –