Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> new возвращает NULL, какие предположения? 
V
    Опции темы
bel_nikita
  Дата 30.1.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



MSVC 6 SP6/ PharLap

Такая засада: оператор new возвращает NULL smile Чтобы это могло быть?
До конструктора не доходит, HeapAlloc выдает NULL
Интересно то, что, если прога идет по другой ветке, то все ок.


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
azesmcar
Дата 30.1.2006, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



интересно smile

насчет HeapAlloc -а это debug-ом выяснялось или пробовал сам HeapAlloc вызывать???

можно задать параметр HEAP_GENERATE_EXCEPTIONS, и посмотреть...вместо возвращения NULL он выдаст exception...

PM   Вверх
threef
Дата 30.1.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



Код

struct null{
    bool s;
};
main()
{
    int x=5,y=7;    
    x==y? x++ :
    ( x>y ? x++: *(&y-1)=-1),y++;
    null *z = new null[x];
    cout<<z<<'\n';
}



Может, немного кода ?
Ну очень трудно догадаться. Здесь new тоже NULL

Это сообщение отредактировал(а) threef - 30.1.2006, 18:51
PM MAIL   Вверх
DeadSoul
Дата 31.1.2006, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(bel_nikita @ 30.1.2006, 17:58 Найти цитируемый пост)

Чтобы это могло быть?

Более 4-х лет боевого опыта. Не бывает такого
Добавлено @ 00:57
bel_nikita, а ты не массив пытаешься создать?
Код

A* pA=new A[mySize];// а mySize меньше нуля....



--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
bel_nikita
Дата 31.1.2006, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата(DeadSoul @ 30.1.2006, 23:47)
Более 4-х лет боевого опыта. Не бывает такого

Бывает оказывается smile возвращает нуль smile У меня, как-то был похожий трабл, реально памяти нехватало, но тут свободной 250 МБ. Но самое непонятное, то что по одной ветке программы все работает, по-другой нет.
А код совершенно безобидный:
Код

...
CObject* pObject = new CObject();
...



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
DeadSoul
Дата 31.1.2006, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Минимальный код воспроизодящий ошибку сделать нереально насколько я понимаю.

operator new переопределен?

Попробуй полный ребилд, может дебугер нсовсем то отображает


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
JackYF
Дата 31.1.2006, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



А какое вообще право имеет new возвращать NULL???

Если я не ошибаюсь, по стандарту он ОБЯЗАН вызывать исключение. Или я чего-то недопонял?

Насчет самой проблемы - не бывало.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
bel_nikita
Дата 31.1.2006, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата(JackYF @ 31.1.2006, 02:03)
А какое вообще право имеет new возвращать NULL???

Если я не ошибаюсь, по стандарту он ОБЯЗАН вызывать исключение. Или я чего-то недопонял?

Возвращать NULL - это фича MSVC


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Mayk
Дата 31.1.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(bel_nikita @ 31.1.2006, 13:41 Найти цитируемый пост)

Возвращать NULL - это фича MSVC

Как насчёт того, чтобы переопределить new самому таким образом, чтобы он кидал исключения?


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
threef
Дата 31.1.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



new...
Цитата


bel_nikita

Возвращать NULL - это фича MSVC



Возвращать NULL- это фича new.
Честно говоря, если у тебя new для CObject не переопределен, то неясно, как он возвращает NULL. У меня не получилось smile
PM MAIL   Вверх
Mayk
Дата 31.1.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(threef @ 31.1.2006, 19:54 Найти цитируемый пост)

Возвращать NULL- это фича new.

это вовсе не фича new, это фича new(nothrow).
Стандарт 2003. Параграф 5.3.4. Пункт 13.
Цитата

[Note: unless an allocation function is declared with an empty exception-specification (15.4), throw(), it
indicates failure to allocate storage by throwing a bad_alloc
exception (clause 15, 18.4.2.1); it returns a
non-null pointer otherwise
. If the allocation function is declared with an empty exception-specification,
throw(), it returns null to indicate failure to allocate storage and a non-null pointer otherwise. ] If the
allocation function returns null, initialization shall not be done, the deallocation function shall not be called,
and the value of the new-expression shall be null.

Иными словами - обычный new либо возвращает не null, либо кидает исключение.

Это сообщение отредактировал(а) Mayk - 31.1.2006, 16:50


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 31.1.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Где то читал , что это настраивается компилятором, что делать, или нулл возвращать или исключение кидать.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Earnest
Дата 31.1.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Стандарт - это, конечно, хорошо, но не в идеальном мире живем...
Насколько я помню, в 6й студии была такая опция - NULL возвращать или исключение кидать.
Вот как и где она включается - не помню - то ли что-то вызвать надо, то ли просто опция в проекте или слово волшебное для препроцессора... Короче, попробуй поискать в MSDN (именно том, что для этой студии) по словам new, set_new_handler и т.д. (просто чтобы понять - что же у тебя включено).

Тем не менее, очень странно, что возвращает NULL (не 256 mb твой объект ведь)... Попробуй сходить внутрь отладчиком.

Кажется, new может вернуть NULL, если просят 0 байтов... Чудно, конечно, но надо бы проверить, чего там в той ветке компилятор накомпилировал...


--------------------
...
PM   Вверх
np9mi7
Дата 31.1.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Цитата
Интересно то, что, если прога идет по другой ветке, то все ок.

Цитата
Но самое непонятное, то что по одной ветке программы все работает, по-другой нет.

Что за ветки ты имеешь ввиду?


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
bel_nikita
Дата 31.1.2006, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Сваливается событие в глобальную очередь, потом парсится:
Код
BOOL cTestManager::ProcessMessage(Message timMsg)
{
...
case CREATE:
          InitTDispatcher();
break;
...
}

Происходит инициализация диспетчера:
Код
BOOL InitTDispatcher(int iPar = -1)
{
...
    TRegistrator::Instance()->ParseCreationXMLFile("module.xml");
...
}

А вот, соббственно и проблемная "зона":
Код

bool TRegistrator::ParseCreationXMLFile(const char *szFileName)
{
  CXMLRead *lpXML = new CXMLRead(); // Вот, тут я получаю  NULL
...
}

Покопался в дебаге. NULL вылает метод HeapAlloc.

Это сообщение отредактировал(а) bel_nikita - 31.1.2006, 18:44


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 31.1.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Почитай в MSDN насчет HeapAlloc. Она может возвращать 0 в двух случаях: если нет памяти, или если хип поврежден. Полагаю, дело во-втором.
Как я поняла, один и тот же код (ParseCreationXMLFile) у тебя то работает, то нет, в зависимости от того, по какой ветви идет выполнение? Так проверь как следует ветку, в которой рушится. Посмотри функции HeapValidate, HeapQueryInformation, HeapWalk.


--------------------
...
PM   Вверх
Fixin
Дата 31.1.2006, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



А может скобки убрать при объявлении?
Код

bool TRegistrator::ParseCreationXMLFile(const char *szFileName)    
{    
  CXMLRead *lpXML = new CXMLRead;
...    
}

PM MAIL ICQ   Вверх
Earnest
Дата 31.1.2006, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Скобки там, конечно, не нужны, но вряд ли это они производят такой разрушительный эффект на хип smile


--------------------
...
PM   Вверх
Fixin
Дата 31.1.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



А хто знает? шестая ведь...
PM MAIL ICQ   Вверх
maxim1000
Дата 31.1.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



многопоточность используется?


--------------------
qqq
PM WWW   Вверх
bel_nikita
Дата 31.1.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата(Earnest @ 31.1.2006, 18:59)
Она может возвращать 0 в двух случаях: если нет памяти, или если хип поврежден. Полагаю, дело во-втором.

Вот, и я так думаю. Но отыскать, где разрушаю, уже неделю не могу. Все работает замечательно имеено до момента указанного выделения.

Цитата(maxim1000 @ 31.1.2006, 20:42)
многопоточность используется?

Да, используется. до 15 потоков.



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
dronzo
Дата 31.1.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 26.11.2005
Где: Москва

Репутация: 1
Всего: 8



bel_nikita, Здесь обсуждается похожая проблема. Я честно пытался понять до конца, так как самому интересно стало, но ... smile Быть может, так как ты занимаешься своей проблемой уже определённое время, то приведённые советы будут яснее :
http://groups.google.ru/group/microsoft.pu...892c08b35aac700
PM MAIL   Вверх
chipset
Дата 31.1.2006, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Код

bool TRegistrator::ParseCreationXMLFile(const char *szFileName)
{


try {  CXMLRead *lpXML = reinterpret_cast<CXMLRead*> (HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS,sizeof(CXMLRead))); // /
{ catch (STATUS_NO_MEMORY)
{
//отрепорть как-нить
{
}

Добавлено @ 22:39
Попробуй, что бы было ясно что дело не в outofmemory.
Добавлено @ 22:40
А класс CXMLRead самописный? Может трабла в его конструкторе?



--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
maxim1000
Дата 31.1.2006, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата(bel_nikita @ 31.1.2006, 20:52 Найти цитируемый пост)

Да, используется. до 15 потоков

у HeapCreate есть один флажок: HEAP_NO_SERIALIZE
возможно, по каким-то причинам он устанавливается
правда, не знаю, как это проверить - никогда не сталкивался с необходимостью узнать параметры кучи
если все-таки это так (может, где-то по умолчанию стояло однопоточное приложение), то я вижу три варианта:
1. для каждого потока сделать свою кучу (ну мало ли)
2. найти способ убрать флаг HEAP_NO_SERIALIZE, еслине ошибаюсь, этим занимается CRT...
3. использовать HeapLock и HeapUnlock



--------------------
qqq
PM WWW   Вверх
Earnest
Дата 1.2.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(bel_nikita @ 31.1.2006, 21:52 Найти цитируемый пост)

Вот, и я так думаю. Но отыскать, где разрушаю, уже неделю не могу.

Попробуй HeapValidate. Во-первых, вызови его перез самым new. Если он скажет, что хип порушен, начинай искать, где, с помощью тех же вызовов HeapValidate.

Потоки могут вызвать взаимоблокировку при распределении памяти, с таким сталкивалась, но чтобы порчу кучи... Я думаю, это какой-нибудь тупой баг, типа записи по живому...



--------------------
...
PM   Вверх
bel_nikita
Дата 9.2.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Никак не удается найти smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Hroft
Дата 9.2.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



А если прямо перед этой строчкой написать какое-нибудь банальное
Код

        int* iii = new int;
        *iii = 4;
        int ii = *ii;

оно будет работать? Мне тоже кажется, что проблема в конструкторе. Даже если не самописный, не боги горшки обжигают.
PM MAIL ICQ   Вверх
bel_nikita
Дата 9.2.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Вот, такой дефайн пробывал вставлять, чтоб отловить куски, где хип "бью".
Код
#define ASSERT_NEW_OK  { char* __p = new CHAR[6400]; if ( __p == NULL ){ __asm { int 3 }; } else delete __p; }

Но сейчас "покапался" в линкере и нашел переменную stack. Увеличил до 32768 и ... Ура! Работает!... Вроде smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Hroft
Дата 9.2.2006, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



У тебя там что, рекурсивные вызовы есть, что стека не хватает? Или такие прикольные локальные переменные?
Интересно, а stack общий для всех потоков, или каждому свой?
PM MAIL ICQ   Вверх
Lotrex
Дата 10.2.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



Цитата

Цитата(threef @  31.1.2006,  19:54 Найти цитируемый пост)

Возвращать NULL- это фича new.

это вовсе не фича new, это фича new(nothrow).
Стандарт 2003. Параграф 5.3.4. Пункт 13.
Цитата

[Note: unless an allocation function is declared with an empty exception-specification (15.4), throw(), it
indicates failure to allocate storage by throwing a bad_alloc
exception (clause 15, 18.4.2.1); it returns a
non-null pointer otherwise
. If the allocation function is declared with an empty exception-specification,
throw(), it returns null to indicate failure to allocate storage and a non-null pointer otherwise. ] If the
allocation function returns null, initialization shall not be done, the deallocation function shall not be called,
and the value of the new-expression shall be null.

Иными словами - обычный new либо возвращает не null, либо кидает исключение.


А мне бы как раз такой необычный new не помешал. Из приведенной цитаты стандарта понятно, что вроде можно это сделать, но не понятно, как... Мож, подскажете?
PM MAIL ICQ   Вверх
Mayk
Дата 10.2.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Lotrex @ 10.2.2006, 12:57 Найти цитируемый пост)


А мне бы как раз такой необычный new не помешал. Из приведенной цитаты стандарта понятно, что вроде можно это сделать, но не понятно, как... Мож, подскажете?

Код

#include <new>
#include <iostream>
using namespace std;
int main()
{
   char * c = new(nothrow) char[0x7FFFFFFF];
   if(c==0){ 
      cout << "null!" << endl;
   }
}




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
np9mi7
  Дата 10.2.2006, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Цитата
Но сейчас "покапался" в линкере и нашел переменную stack. Увеличил до 32768 и ... Ура! Работает!... Вроде smile
, одно не понятно: стек и хип разные вещи, как это могло сработать...???


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Hroft
Дата 10.2.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



В конструкторе могли локальные переменные объявляться, они его и забили окончательно.
PM MAIL ICQ   Вверх
np9mi7
Дата 10.2.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Цитата
В конструкторе могли локальные переменные объявляться, они его и забили окончательно.
, тогда словил бы exception о том, что стек переполнен, так причем тут куча?


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Hroft
Дата 10.2.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



И правда...
А может, он не смог это исключение кинуть, поскольку оно создается в стеке, а он переполнен? smile
Или сам new использует локальные переменные зачем-то, и в этом проблема? Тоже сильно сомнительно...
PM MAIL ICQ   Вверх
Neitron
Дата 10.2.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Стандарт гарантирует что в стеке всегда будет место для этого исключения.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0877 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.