перегрузка оператора new\delete
Рекомендуется не производить в операторе new (особенно в глобальном) какие-либо операции с объектами, которые могут вызвать оператор new. Например, для вывода текста используется функция printf, а не объект std::cout.PS Имхо, если у тебя возникают такие вопросы, тебе совершенно точно не надо перегружать эти операторы.
допустим, что есть кодначни с примеров, которые есть в гугле
у тебя каша какая-то и в коде и в голове
cout<< ;Действительно!
прога не компилится, в чем прблема? вроде правильно
Действительно!а можно еще и статик каст навесить
static_cast<>(cout)<< ;
static_cat<(^_^)>(cout)<_<';
нет, там после сиаут бала строка, в лом было эту строку печатать, а статик каст там был был перед нью в main
void* operator new(size_t size, string st)
{
void* ptr = malloc( size);
cout<<st<<endl;
return ptr;
}
void operator delete(void * ptr) throw
{
free(ptr);
cout<< "fuck" << endl;
}
int main
{
int* ptr = new (string(" vvv" int;
delete ptr;
return 0;
}
Обрати внимание на вызов new (параметры передаются до типа, при этом я завернул в string строку, а то там перегрузка на плейсмент нью пойдет, а не на твой): int* ptr = new (string(" vvv" int;
а не int* ptr = new( int, " vvv");
спс огромное
Оставить комментарий
bigbill
допустим, что есть кодvoid* operator new( size_t size, string st)
{
void* ptr = malloc( size);
cout<<st<<endl;
return ptr
}
void operator delete( void * ptr)
{
free(ptr);
cout<< ;
}
int main
{
int* ptr = new( int, " vvv");
delete(p);
return 0;
}
прога не компилится, в чем прблема? вроде правильно new и delete перегружаю
пробовала статик каст добавить - все равно не работает