Re: throw в конструкторе?
От: Igore Россия  
Дата: 29.12.09 08:20
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

_>Предполагается, что в случае, если будет сделана попытка создать слишком много экземпляров класса, возникшее исключение не позволит довести процесс до конца. Если исключение не будет перехвачено, то приложение просто вылетит, если будет перехвачено, но экземпляр Foo будет создаваться в стеке — за счет выравнивания стека выделенная для экземпляра память будет возвращена системе. Однако что будет в случае, когда экземпляр создается в куче, а исключение перехватывается? Перед вызовом конструктора будет вызван new и выделена память, в конструкторе будет сгенерировано исключение, вызывающий код его перехватит, а выделенная память — так и останется висеть, и приложение в принципе не может получить указатель на эту память и уж тем более освободить ее. Так? Или стандарт как-то эту ситуацию оговаривает особо? Или я чего-то недопонимаю?


_>Заранее благодарю за разъяснения.


Объект не удалось сконструировать, значит память не выделена. Ничего освобождать не надо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.