Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
я тоже раньше так думал 05.05.08 14:54 Число просмотров: 2628
Автор: dl <Dmitry Leonov> Отредактировано 05.05.08 15:47 Количество правок: 5
|
> В целом абсолютно согласен, но небольшое замечание сделаю > > buf1= new char [10000000]; > > delete buf1; - учите язык > Абсолютно корректно (ну зачем нам деструкторы char-а?). > Более того, в неявном виде я и сам такую запись использую > постоянно: > std::auto_ptr<char> buf(new char[SIZE]);
Хотя в первых книжках Страуструпа и можно прочитать, что delete [] отличается от delete вызовом деструктора для каждого элемента массива (так вел себя cfront), согласно стандарту, поведение delete для памяти, выделенной new[], не определено и вполне может привести к непредсказуемым результатам вплоть до heap corruption - даже для простых типов. Конкретные реализации типа Visual C++ это дело могут прощать (реально все зависит от того, как организовано хранение информации о размере массива), но в общем случае на это лучше не закладываться.
> Просто потому, что векторного auto_ptr-а нет. Другое дело,
Ну есть же shared_ptr/shared_array из boost. Auto_ptr - это вообще хождение по минному полю.
http://www.new-brunswick.net/workshop/c++/faq/freestore-mgmt.html#faq-16.12 http://www.new-brunswick.net/workshop/c++/faq/compiler-dependencies.html#faq-38.7
|
|
|