Форум — Development размещение при помощи new в С++ 0 1 заклинило... положим пример: char* buff = new[sizeof(MyClass)] char(); MyClass* ptr = new(buff) MyClass(....); теперь вопрос: надо ли вызывать delete ptr и если да то что этот delete удалит? Деструктор он для MyClass конечно вызовет, но вот удалит он что не buff ли? Ссылка
руками вызываешь деструктор и освобождаешь оригинальный буфер aho (24.09.11 15:41:10 MSK) Показать ответы Ссылка
Ответ на: комментарий от aho 24.09.11 15:41:10 MSK руками вызываешь деструктор и освобождаешь оригинальный буферИменно. И только так. Pavval ★★★★★ (24.09.11 21:43:23 MSK) Ссылка
Ответ на: комментарий от aho 24.09.11 15:41:10 MSK Т.е. Сначала MyClass.~MyClass(), а потом delete[] buff; А нельзя delete MyClass, а потом delete[] buff? Bad_ptr ★★★★★ (24.09.11 23:10:27 MSK) Показать ответ Ссылка
Ответ на: комментарий от Bad_ptr 24.09.11 23:10:27 MSK > А нельзя delete MyClass, а потом delete[] buff? нет, будет попытка два раза освободить один и тот участок памяти и крэш aho (24.09.11 23:53:13 MSK) Ссылка
> char* buff = new[sizeof(MyClass)] char(); Что?! Может new char[sizeof(MyClass)]? надо ли вызывать delete ptrdelete ptr вызывать нельзя. Деструктор он для MyClass конечно вызовет, но вот удалит он что не buff ли?Undefined behavior, точка.Пишите на быдлоне или быдляве чтоли. slovazap ★★★★★ (25.09.11 03:26:04 MSK) Ссылка
Зачем такие экзорциссы? По ногам любите стрелять? Vernat ★★ (26.09.11 13:42:57 MSK) Показать ответ Ссылка
Ответ на: комментарий от Vernat 26.09.11 13:42:57 MSK Мне вот тоже непонятно, зачем это нужно. JackyTreehorn ★ (26.09.11 17:17:45 MSK) Показать ответ Ссылка
Ответ на: комментарий от JackyTreehorn 26.09.11 17:17:45 MSK Мне вот тоже непонятно, зачем это нужно.например, чтоб разместить объекты в пуле aho (26.09.11 17:20:22 MSK) Показать ответ Ссылка
Ответ на: комментарий от aho 26.09.11 17:20:22 MSK аха, спасибо. JackyTreehorn ★ (26.09.11 17:34:20 MSK) Ссылка