![]() |
|
|
![]()
|
|
| Alca |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
С++Builder 2009
Можно ли применять автопоинтер к массиву?
Дестуктор класса автопоинтер (вызывается при выходе из блока):
Не будет ли утечки памяти, т.к. применяеться оператор
вместо
P.S. По ходу там дальше идет очистка памяти. Проверил, сделал цикл на 1 000 000 иттераций - память не увеличивалась. Вопрос решен. Это сообщение отредактировал(а) Alca - 13.1.2009, 13:54 |
||||||||
|
|||||||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
И как память проверяли? CodeGuard?
Вообще так код писать нельзя. Неужели трудно свой строгий указатель написать специально для массивов. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
В диспетчере задач |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 1 Всего: 36 |
Alca,
Не будет ли утечки памяти будет не утечка памяти а UB |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Это че за шняга? |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
undefined behavior, вместо auto_ptr лучше использовать boost::scoped_array
Добавлено через 1 минуту и 4 секунды WTF is строгий указатель? Добавлено через 1 минуту и 58 секунд и зачем его писать если есть boost::scoped_array и boost::shared_array? |
|||
|
||||
| TiKKi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.5.2006 Репутация: 1 Всего: 2 |
А зачем вообще так делать? std::vector, по-моему, логичней использовать.
|
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Вообще-то я нашел этот кусок кода в хелпе от C++Builder 2009.
Добавлено @ 17:01
Ну я делал 1 000 000 иттераций и что-то не было никакого undefined behavior - объём памяти осталася таким же. Это сообщение отредактировал(а) Alca - 14.1.2009, 17:13 |
||||
|
|||||
| Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
ага, но хочется человеку использовать auto_ptr с указателем на массив
нет, UB было Добавлено через 1 минуту и 4 секунды так делать нельзя |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Насчет std::vector я согласен, что лучше.
Lazin, разъясни где оно (UB) было? Это сообщение отредактировал(а) Alca - 14.1.2009, 17:17 |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
во время удаления массива оператором delete вместо delete [], UB это когда результат работы кода не определен, он может работать так как предполагается, как в случае с delete, а может не работать так как предполагается, а может на одном компиляторе работать так, а на другом эдак, если у тебя в коде есть UB, то твоя программа может начать себя вести по другому после выхода новой версии твоего компилятора =) Это сообщение отредактировал(а) Lazin - 14.1.2009, 17:22 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
С этим яно. Спасибо.
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Проcто имеет место быть у некоторых авторов уточняющая терминология, в которой под strong pointer подразумевается pointer, который подчиняется правилу : в любой момент времени только один строгий указатель может владеть памятью, на которую он указывает.
А зачем тащить boost, если от него нужно всего написать небольшой простейший класс? STL - это обязательная составляющая С++, boost пока левая библиотека. Например, некоторые заказчики весьма неодобрительно смотрят на применение левых библиотек. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |