Язык программирования C++ для профессионалов

       

в простой функции размещения нужно


inline size_t align(size_t s) /* Даже в простой функции размещения нужно выравнивание памяти, чтобы на объект можно было настроить указатель произвольного типа */ { union Word { void* p; long double d; long l; }

int x = s + sizeof(Word) - 1; x -= x%sizeof(Word); return x; }

static void* freep; // настроим start на свободную память

void* operator new(size_t s) // простая линейная функция размещения { void* p = freep; s = align(s); freep += s; return p; }

void operator delete(void*) { } // пусто

Если память бесконечна, то наше решение дает сборщик мусора без всяких сложностей и накладных расходов. Такой подход не применим для библиотек, когда заранее неизвестно, каким образом будет использоваться память, и когда программа, пользующаяся библиотекой, будет иметь большое время счета. Такой способ выделения памяти идеально подходит для программ, которым требуется ограниченный объем памяти или объем, пропорциональный размеру входного потока данных.


Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий