Re: Свой operaor new и глобалные объекты
От: abdab Россия  
Дата: 30.05.11 08:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>У меня переопределен operator new и operator delete

А>Падение программы происходит на operator delete, когда ему дается указатель на объект, который был выделен не через мой operator new
А>Выяснил, что объект этот — глобалный и создается до вызова main.

А>Но почему-то убивается он через мой delete


А>Как это разрулить?


А>PS. Не переопрелделять new не предлагать, это не мной писано и там много чего на этом основано, но что эти new и delete рабочие — это стопроцентно


У меня что-то подобное было, правда для embedded системы.
Смотрите на все объекты ваших классов, которые создаются не из кучи, то есть глобальные стековые объекты. Так вот смотрите на их конструкторы, создаются ли там новые объекты, если да — то в этом и проблема, потому что до функции main в некоторых случаях используются стандартные не переопределенные функции и операторы для работы с кучей, а инициализация глобальных объектов происходит именно до функции main. Но это скорее всего правомерно только для некоторых embedded компиляторов. Так что второй вариант: кто-то явно вызывает delete для стекового объекта, смотрите стек вызова.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.