Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > как переопределить глобальный new?


Автор: vii 7.2.2008, 11:22
Доброго времени суток!

Прошу прощения за то, что дублирую пост из раздела "Kylix", но там, видимо, больше специалистов по Object Pascal,
а вопрос "горит".

Есть проблема с утечкой памяти. Т.к. codeguard в Kylix нет, хочу попробовать поискать через переопределение оператора new.
Код

inline void * __cdecl operator new(unsigned int size) {
  void *ptr = (void *)malloc(size);
  log(ptr);
  return ptr;
}


при создании объекта class a {... используется переопределённый new,
а если class a: public TObject {... - нет;
отладчик идёт в System.pas в метод класса TObject
Код

class function TObject.NewInstance: TObject;


может надо new как-то по-другому переопределять?

Автор: Lazin 7.2.2008, 12:31
вместе с new нужно переопределять и delete. Для объектов TObject оператор new переопределен, так что врядли получиться.

Автор: vii 7.2.2008, 13:24
Цитата(Lazin @  7.2.2008,  12:31 Найти цитируемый пост)
вместе с new нужно переопределять и delete

конечно


Цитата(Lazin @  7.2.2008,  12:31 Найти цитируемый пост)
Для объектов TObject оператор new переопределен

не подскажете где искать? может можно переопределить переопределение? smile

Добавлено через 4 минуты и 38 секунд
Нет ли других идей по поиску утечек памяти?

Автор: dumb 7.2.2008, 16:44
F1, SetMemoryManager

Автор: Дерзающий 8.2.2008, 14:33
а почему именно new, создай new_ex и все будет только твоим.

Автор: Lazin 8.2.2008, 14:53
что, есть такой оператор  smile 

Автор: vii 8.2.2008, 16:05
Цитата(dumb @  7.2.2008,  16:44 Найти цитируемый пост)
F1, SetMemoryManager


спасибо, буду копать в этом направлении

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)