Je dois remplacer les allocateurs par leur code source d'origine. J'extrais des méthodes exportées de la table d'exportation de PE et fais face aux allocateurs longs étranges où les récipients de STL ont été employés dans le code source original. à savoir si le code source est:Comment remplacer les allocateurs de stl par le code source réel
typedef std::list<std::basic_string<_TCHAR> > TokenList;
EXPORTS_API const TokenList& getLiteralList();
de la table d'exportation Je reçois:
std::list<class std::basic_string<unsigned short, std::char_traits<unsigned short>,class
std::allocator<unsigned short> >,class std::allocator<class std::basic_string<unsigned
short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > > >
const & __thiscall CExpressionTokenizer::getLiteralList(void)
Comment puis-je obtenir le backtrack des allocataires longs ci-dessus à son code source original? (Typedefs augmentent plus en taille.)
Cordialement,
Usman
Je pensais que d'abord, mais pour autant que je sache, il a un utilitaire qui extrait les noms d'un exécutable. Ces noms sont criblés de trucs d'allocateurs (comme ils devraient l'être), et il veut se débarrasser d'eux, je pense. – GManNickG
ouais définitivement. Je souhaite remplacer exactement mon code source original à la place de ces attributions. En fait, j'ai besoin de montrer ces types et méthodes extraites (que j'ai pris de la table d'exportation) à l'interface graphique ou dire quelques XMLs. Donc en tant qu'utilisateur je ne reconnaîtrai pas ces allocateurs – Usman
Vous ne pouvez pas avoir un remplacement exact. Les allocateurs dans les conteneurs STL ne sont qu'un exemple d'arguments par défaut. Par exemple. 'std :: set' aura aussi une commande par défaut 'std :: less '. Après la compilation, vous ne pouvez plus savoir si un argument par défaut a été fourni ou non. Cela ne veut pas dire typedefs ('std :: string' est vraiment' std :: basic_string ') –
MSalters