| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > delete и delete [] для массивов встроенных типов |
| Автор: Kuvaldis 20.3.2008, 19:52 | ||
| Всем привет! Возникла такая проблема:
|
| Автор: Rififi 20.3.2008, 20:03 | ||
Микрософт делает поблажки нерадивым программистам? :green: |
| Автор: maxim1000 20.3.2008, 20:43 |
| если стандарт требует гарантии, что две конструкции работают одинаково, это не означает, что он требует, чтобы они работали по-разному Добавлено через 39 секунд может, просто так было удобнее реализовать, стандарту не противоречит |
| Автор: vinter 20.3.2008, 21:17 |
| может работать так, а может и не так. Не определено что произойдет в случае применения одиночного делита для массива, может удалит все, а может нет. |
| Автор: korian 21.3.2008, 02:50 |
| в общем случае это не определено, а на практике при одиночном делите массива (без скобок), деструктор вызывается только для одного объекта массива. |
| Автор: baldina 21.3.2008, 10:34 | ||
Это потому что деструктор для встроенных типов - пустая функция, как и деструктор по умолчанию. Напиши класс без деструктора, будет то же самое. Дизассемблированный код просто не содержит этих ненужных вызовов (да и функций-деструкторов как таковых нет для встроенных типов). Добавлено через 2 минуты и 52 секунды память, выделенная operator new() должна освобождаться при помощи operator delete() память, выделенная operator new[]() должна освобождаться при помощи operator delete[]() привыкни так делать для всех типов, проблем будет меньше. не гарантируется что хотя бы для встроенных типов их смешивание будет работать. |