![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
MSVC 6 SP6/ PharLap
Такая засада: оператор new возвращает NULL До конструктора не доходит, HeapAlloc выдает NULL Интересно то, что, если прога идет по другой ветке, то все ок. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
интересно
насчет HeapAlloc -а это debug-ом выяснялось или пробовал сам HeapAlloc вызывать??? можно задать параметр HEAP_GENERATE_EXCEPTIONS, и посмотреть...вместо возвращения NULL он выдаст exception... |
|||
|
||||
| threef |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 9 Всего: 10 |
Может, немного кода ? Ну очень трудно догадаться. Здесь new тоже NULL Это сообщение отредактировал(а) threef - 30.1.2006, 18:51 |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Более 4-х лет боевого опыта. Не бывает такого Добавлено @ 00:57 bel_nikita, а ты не массив пытаешься создать?
-------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Бывает оказывается А код совершенно безобидный:
|
||||
|
|||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Минимальный код воспроизодящий ошибку сделать нереально насколько я понимаю.
operator new переопределен? Попробуй полный ребилд, может дебугер нсовсем то отображает -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
А какое вообще право имеет new возвращать NULL???
Если я не ошибаюсь, по стандарту он ОБЯЗАН вызывать исключение. Или я чего-то недопонял? Насчет самой проблемы - не бывало. |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Возвращать NULL - это фича MSVC |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Как насчёт того, чтобы переопределить new самому таким образом, чтобы он кидал исключения? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| threef |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 9 Всего: 10 |
new...
Возвращать NULL- это фича new. Честно говоря, если у тебя new для CObject не переопределен, то неясно, как он возвращает NULL. У меня не получилось |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
это вовсе не фича new, это фича new(nothrow). Стандарт 2003. Параграф 5.3.4. Пункт 13.
Иными словами - обычный new либо возвращает не null, либо кидает исключение. Это сообщение отредактировал(а) Mayk - 31.1.2006, 16:50 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
Где то читал , что это настраивается компилятором, что делать, или нулл возвращать или исключение кидать.
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Стандарт - это, конечно, хорошо, но не в идеальном мире живем...
Насколько я помню, в 6й студии была такая опция - NULL возвращать или исключение кидать. Вот как и где она включается - не помню - то ли что-то вызвать надо, то ли просто опция в проекте или слово волшебное для препроцессора... Короче, попробуй поискать в MSDN (именно том, что для этой студии) по словам new, set_new_handler и т.д. (просто чтобы понять - что же у тебя включено). Тем не менее, очень странно, что возвращает NULL (не 256 mb твой объект ведь)... Попробуй сходить внутрь отладчиком. Кажется, new может вернуть NULL, если просят 0 байтов... Чудно, конечно, но надо бы проверить, чего там в той ветке компилятор накомпилировал... -------------------- ... |
|||
|
||||
| np9mi7 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
Что за ветки ты имеешь ввиду? |
||||
|
|||||
| bel_nikita |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Сваливается событие в глобальную очередь, потом парсится:
Происходит инициализация диспетчера:
А вот, соббственно и проблемная "зона":
Покопался в дебаге. NULL вылает метод HeapAlloc. Это сообщение отредактировал(а) bel_nikita - 31.1.2006, 18:44 |
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |