![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Заменить malloc+free на авто-поинтер. Какой поинтер выбрать (std::auto_ptr, shared_ptr, ...)?
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
---
Это сообщение отредактировал(а) jonie - 17.7.2009, 16:34 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
При выходе из блока (из области видимости):
Это сообщение отредактировал(а) Alca - 17.7.2009, 16:45 |
||||
|
|||||
| GoldFinch |
|
||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
// оффтоп
зачем в С++ писать
если достаточно написать
Добавлено через 1 минуту и 11 секунд кстати cbSize - тавтология (count of bytes size) |
||||
|
|||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Это сообщение отредактировал(а) Alca - 17.7.2009, 17:39 |
||||
|
|||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Код - супер. Все б так писали. Это сообщение отредактировал(а) Леопольд - 17.7.2009, 17:55 -------------------- вопросов больше чем ответов |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Это DDK
|
|||
|
||||
| Леопольд |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
malloc - не вызывает конструктор. new - вызывает (если не указано явно, то вызывает конструктор по умолчанию) free - не вызывает деструктор delete - вызывает Если не ошибаюсь, а я могу Разница между auto_ptr и shared_ptr: auto_ptr передаёт указатель между инстансами т.е всегда только один валидный указатель
shared_ptr использует "подсчёт ссылок"
Это сообщение отредактировал(а) Леопольд - 17.7.2009, 18:10 -------------------- вопросов больше чем ответов |
||||||
|
|||||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Не надо будет делать free(). Если идет НемалоЕ ветвление условий, то везде ставить free() как-то не по приколу, лишний головняк. Это сообщение отредактировал(а) Alca - 17.7.2009, 19:13 |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Lazin, разчехли.
|
|||
|
||||
| Andrew121 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 21.6.2009 Репутация: нет Всего: 1 |
||||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Но зато не будет потенциальных затрат на вызовы конструторов из-за new, и деструкторов из-за delete. Так же не будут создаваться объекты смарт указателей, значит не будут вызваны их конструкторы, деструкторы, операторы копирования. Вероятно, оптимизатор всё это уберёт из бинарника, но не факт (возможно, встроит отработку деструкторов смарт поинтеров, где надо), но полагаться на оптимизатор, по моему, не стоит. Если не ошибаюсь, для драйверов, скорость весьма существенна. Это сообщение отредактировал(а) Леопольд - 17.7.2009, 22:06 -------------------- вопросов больше чем ответов |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Мне важнее стабильность работы нежели скорость выполнения. Это не драйвер.
|
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Выбор смарт поинтера зависит от его поведения, котрое я описал выше. auto_ptr "легче", чем shared_ptr, но его поведение не так интуитивно понятно. Ошибка, скорее всего происходит из-за неправильного использования. -------------------- вопросов больше чем ответов |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |