Показать сообщение отдельно

  #5064  
Старый 01.04.2010, 23:46
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Цитата:
Сообщение от SHiNiGaMi  
rudvil

int CurrentMemory=0;
int *pint = new int;
if ((CurrentMemory +=sizeof(pint)) >= 20480)
{
cout << "память заполнена";
delete pint;
}
else CurrentMemory +=sizeof(*pint);

строго не судите, но возможно так
Спасибо конечно, но я пока-что остановился на этом
Код:
void* operator new (std::size_t size) {
    /*
    тут проверка - не превысется ли лимит... при malloc
    */
    void* mem = std::malloc(size);
    if (!mem)
        ail::fatal_error("\n[ALLOCATING FAILED]\n");
    return mem;
}

void operator delete (void* mem) {
    std::free(mem);
}

void* operator new[] (std::size_t size) {
    /*
    тут проверка - не превысется ли лимит... при malloc
    */
    void* mem = std::malloc(size);
    if (!mem)
        ail::fatal_error("\n[ALLOCATING FAILED]\n");
    return mem;
}

void operator delete[] (void* mem) {
    std::free(mem);
}
т.б. глобально перегрузил операторы.

Последний раз редактировалось rudvil; 01.04.2010 в 23:53..
 
Ответить с цитированием