| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как правильно очистить память? |
| Автор: 0000 21.11.2007, 23:08 | ||||||
| Добрый вечер всем..с C++ у меня тяжко..объясните плз. один момент.. допустим есть класс X.. в нем храним массивчик из элементов того же типа X... как правильно удалить?? вот код X.h
X.cpp
main.cpp
вот на удалении x1 и происходит ругань...плз, как удалить правильно такую структурку элементов? спасибо |
| Автор: DjoNIK 21.11.2007, 23:40 | ||
Ты этим ни байта не резервируешь. |
| Автор: Greeen 21.11.2007, 23:41 |
| В C++ запрещены массивы из 0 элементов |
| Автор: DjoNIK 21.11.2007, 23:42 | ||
По идее, каждый раз нужно резервировать место, когда идет добавление. |
| Автор: UnrealMan 22.11.2007, 01:55 |
А это обязательно - уверенно говорить о том, в чём сам не разбираешься? Хоть бы "IMHO" добавил что ли. |
| Автор: 0000 22.11.2007, 02:25 |
| разве в C++ запрещены массивы из 0 элементов?? странно...я просто выделяю память через new, но не заполняю массив... я больше по .NET, так вот это ассоциируется с созданием пустого листа (коллекции)...выделяешь память, не добавляя элементов.... в общем + 1 для DjoNIK, спасибо, именно это и надо было сделать!!! THX |
| Автор: UnrealMan 22.11.2007, 02:47 |
Создать массив нулевой длины можно, но только затем, чтобы потом его удалить Это тебе std::vector надо использовать. Либо, если по каким-то причинам vector не подходит, самому выделять сырую память вызовом operator new с последующим размещением в ней объектов с помощью placement new. |
| Автор: 0000 22.11.2007, 10:11 | ||
например для хранения вершин графа..в вершинах содержится инфа о смежных... хотя тут действительно может лучше использовать vector |
| Автор: Greeen 22.11.2007, 12:56 | ||
У меня просто отложилась фраза Александреску "в C++ массивы нулевой длины запрещены", но там говорилось о массивах создающихся статически. Вот чего то и ступил. Извините, UnrealMan, что задел вас (уж не знаю за что)... |
| Автор: archimed7592 23.11.2007, 02:25 | ||
У меня тоже отложилась и я тоже как то раз "задел" этим UnrealMan'а |