Cześc ;)
Kilka pytań:
- W jakich sytuacjach warto rozważyć pisanie własnego new?
- Jak się do tego zabierać, aby poprawić wydajność?
- W książce mam taki przykład:
class Thing{
private:
static Pool pool;
public:
inline void* operator new(size_t size){
assert(size < sizeof(Thing));
return pool.alloc();
}
inline void operator delete(void* v){
pool.free(v);
}
Pool Thing::pool(sizeof(Thing));
Stąd widać, że wszystko spychamy na klasę Pool? Ale jak klasa Pool miałaby wyglądać już napisanie nie jest ;). Zatem chciałbym sam pogłówkować.
4. Czyżby free z klasy Pool to miałoby być zwykłe delete? Jeżel tak, to co zyskujemy? Jeżeli nie, to jak inaczej?
5. Jak zabrać się za alokację? Niby mogę napisać zaalokowanie pamięci? Ale popatrzmy, że operator new mam za zadanie poza przydzieleniem pamięci, konstrukcję obiektu?
Nie mam pojęcia jak mam napisać alloc tak, żeby ten jeszcze konstruował obiekt odpowiedniego typu? Bo jeżeli będę zwracał tylko wskaźnik do pamięci, to co to za operator new?