Запускаю... и наверно, получу граблей по лбу. Ибо в деструкторе будет вызван delete this->get();
А Священное Писание, то бишь стандарт, говорит — надо вызывать delete[]
Насколько я помню, для примитивных типов никакой катастрофы не будет... но тем не менее, это нужно считать "грязным кодом"?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re: std::auto_ptr и new[] - насколько это допустимо? :)
Д>Запускаю... и наверно, получу граблей по лбу. Ибо в деструкторе будет вызван delete this->get(); Д>А Священное Писание, то бишь стандарт, говорит — надо вызывать delete[]
>но тем не менее, это нужно считать "грязным кодом"?
ага
Д>Запускаю... и наверно, получу граблей по лбу. Ибо в деструкторе будет вызван delete this->get(); Д>А Священное Писание, то бишь стандарт, говорит — надо вызывать delete[] Д>Насколько я помню, для примитивных типов никакой катастрофы не будет... но тем не менее, это нужно считать "грязным кодом"?
С точки зрения "практического программирования" — это сугубо религиозный вопрос. Но я бы так писать не стал. К тому же есть boost::shared_array и boost::scoped_array, хотя применение буста тоже многих смущает (хотя их обычно смущает и применение stl).
Re: std::auto_ptr и new[] - насколько это допустимо? :)
Д>Запускаю... и наверно, получу граблей по лбу. Ибо в деструкторе будет вызван delete this->get(); Д>А Священное Писание, то бишь стандарт, говорит — надо вызывать delete[] Д>Насколько я помню, для примитивных типов никакой катастрофы не будет... но тем не менее, это нужно считать "грязным кодом"?
Это запрещено, если тебе нужен автоматический массив примитивных типов — воспользуйся std::vector, в конструкторе можешь задать размер буфера, &vector[0] возвращает указатель на начало массива, есть средства для гибкой стратегии управления памяти ( allocator, reserve ).
Will I live tomorrow? Well I just can't say
But I know for sure — I don't live today.
Jimi Hendrix.
Re[2]: std::auto_ptr и new[] - насколько это допустимо? :)
Здравствуйте, Mechanicus, Вы писали:
M>С точки зрения "практического программирования" — это сугубо религиозный вопрос. Но я бы так писать не стал. К тому же есть boost::shared_array и boost::scoped_array, хотя применение буста тоже многих смущает (хотя их обычно смущает и применение stl).
Похоже на то, что и сам C++ всё больше становится мистической тайной, а не просто языком программирования
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: std::auto_ptr и new[] - насколько это допустимо? :)
Здравствуйте, Batiskaf, Вы писали:
B>Это запрещено, если тебе нужен автоматический массив примитивных типов — воспользуйся std::vector, в конструкторе можешь задать размер буфера, &vector[0] возвращает указатель на начало массива, есть средства для гибкой стратегии управления памяти ( allocator, reserve ).
Знаем, Майерса тоже читали
Меня просто сам вопрос заинтересовал. А где запрещено? Не помню ничего на эту тему
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: std::auto_ptr и new[] - насколько это допустимо? :)
Д>Запускаю... и наверно, получу граблей по лбу. Ибо в деструкторе будет вызван delete this->get(); Д>А Священное Писание, то бишь стандарт, говорит — надо вызывать delete[] Д>Насколько я помню, для примитивных типов никакой катастрофы не будет... но тем не менее, это нужно считать "грязным кодом"?
Это ошибка будет
Воспользуйтесь поиском, неоднакратно обсуждалась тема выделения new[] и освобождения delete.