Sto lavorando a un plug-in per un'applicazione, in cui la memoria deve essere allocata dall'applicazione e tenerne traccia. Quindi, gli handle di memoria dovrebbero essere ottenuti dall'applicazione host sotto forma di buffer e in seguito restituirli all'applicazione. Ora, sto pianificando di utilizzare i vettori STL e mi chiedo quale tipo di allocazione di memoria utilizzi internamente.Il vettore STL usa 'nuovo' e 'cancella' per l'allocazione di memoria di default?
Utilizza le funzioni "nuovo" e "elimina" internamente? In tal caso, posso semplicemente sovraccaricare "nuovo" e "cancella" con le mie funzioni? O dovrei creare il mio allocatore di template che sembra un lavoro difficile per me dal momento che non sono così esperto nella creazione di modelli personalizzati.
Qualsiasi suggerimento/codice di esempio è benvenuto. maniglie di memoria possono essere ottenuti dall'applicazione come questa
void* bufferH = NULL;
bufferH = MemReg()->New_Mem_Handle(size_of_buffer);
MemReg()->Dispose_Mem_Handle(bufferH); //Dispose it
Per creare il tuo allocatore vedere questo classico di Matt Austern: http://www.drdobbs.com/184403759 – sbi
@sbi: non ho letto che ancora, ma ricorda che la semantica degli allocatori è cambiata in modo significativo in C++ 11. Sei sicuro che quel classico sia ancora attuale oggi? (Questa non è una domanda retorica ma reale.) – einpoklum
@einpoklum Questo è un commento di 6 anni. Abbiamo due nuove versioni standard e un'altra all'orizzonte. Ovviamente le cose potrebbero essere cambiate da allora. – sbi