Бьерн Страуструп.
Язык программирования С++
362
union Word { void* p; long double d; long l; }
int x = s + sizeof(Word) - 1;
x -= x%sizeof(Word);
return
x;
}
st
atic void* freep; // настроим start на свободную память
void* operator new(size_t s) // простая линейная
функция размещения
{
void* p = freep;
s = align(s);
freep += s;
return
p;
}
void operator delete(void*) { } // пусто
Если память бесконечна, то наше решение дает сборщик мусора без всяких сложностей и накладных
расходов. Такой подход не применим для библиотек, когда заранее неизвестно, каким образом будет
использоваться память, и когда программа, пользующаяся библиотекой, будет иметь большое время
счета. Такой способ выделения памяти идеально подходит для программ, которым требуется
ограниченный объем памяти или объем, пропорциональный размеру входного потока данных.
Достарыңызбен бөлісу: