![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Guest |
|
|||
Unregistered |
Всем привет!
Когда-то читал книгу, где описывался пример то-ли какой-то библиотечной функции С, то-ли API-функции, в которую можно подставить любой объект (класс, структуру, int-ы всякие, хоть что) и быстро обнулить поля этого объекта. А теперь, хоть убей, не могу вспомнить название этой замечательной функции. Подскажите! |
|||
|
||||
Dark Elf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 576 Регистрация: 26.12.2003 Где: Брисбен Репутация: 9 Всего: 10 |
Может быть
? |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
ZeroMemory() или FillMemory()
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 3 Всего: 317 |
memset()
-------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
или как нить так
![]()
Это сообщение отредактировал(а) chaos - 14.9.2005, 11:42 |
|||
|
||||
Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 12 |
угу. И шаблонами такую конструкцию обернуть и в функцию запихать ;)
-------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
На Билдере, по крайней мере, всё это приводит к глюкам,
если в классе имеются виртуальнае методы ![]() Это сообщение отредактировал(а) Crait - 14.9.2005, 14:57 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
угу. ты б еще память ядра обнулил. и удивлялся бы -- а почему все завернулось...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
_hunter, кому адресована твоя реплика ?
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
тебе
![]() -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Так с чего ты взял, что я удивляюсь ?
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
с последнего поста
![]() -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Я не удивляюсь, но предостерегаю (в отличие от других ответивших)
от обнуления _всех_ данных класса. |
|||
|
||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
В BSD есть еще ф-ция bzero. Некоторые компиляторы определяют её примерно как
Её не определяют не все виндозные компиляторы впрочем. Но вот в юнихах...
![]() -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
JoyEx |
|
|||
![]() Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: нет Всего: 12 |
для 1 класса попробуй так: ZeroMemory( (BYTE *)Destination + 4, sizeof(Класс) - 4); -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Дыкть, наследование может быть множественным. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
и какой вообще смысл обнулять класс? лучше него это всеравно никто не сделает...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Смысл как раз есть, и нередко
![]() |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 92 |
Это противоречит ООП (щаз как Domestic Catа позову!! ![]() Это сообщение отредактировал(а) Дрон - 14.9.2005, 18:03 -------------------- Да. Именно так. |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Оно может и так, но бывает удобно ![]() |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 3 Всего: 317 |
кроме полей класса в классе есть ещё уйма ( для меня ) лишней информации (vptr ет цетера), к-рую memset затрёт полностью, и что не будет способствовать здоровью программы..
-------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Неужели
удобнее
![]() -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Это понятно, но тогда в reset() придётся обнулять все поля вручную,
а при добавлении нового поля помнить, что следует модифицировать и reset(). В принципе, так и делаю ![]() Это сообщение отредактировал(а) Crait - 14.9.2005, 18:24 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
а в чем проблема помнить все поля? при чем их обычно пишут перед функциями -- так-что просто взглядом пробежаться на предмет есть/нету...
+ предположим я в конструкторе сделал VirtualAlloc(дофига памяти) и что будет после memset' a? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Большой-то проблемы конечно же нет, но всё-же, одно дело
- единожды написать что-нибудь типа memset(this,0,sizeof(*this)) и знать, что покрыто нулём будет абсолютно всё ![]() а другое - перечислять десяток операций по обнулению полей но, главное, помнить, что при изменениях в классе следует модифицировать также и метод reset(). Разумеется, никто, я думаю, не ожидает, что таким образом будет обнулена и динамически выделяемая память. Это сообщение отредактировал(а) Crait - 14.9.2005, 19:40 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
будут обнулены векторы, стринги... интересно...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Заставь кой-кого
![]() Речь ведь в основном о POD-типах. Это сообщение отредактировал(а) Crait - 15.9.2005, 12:03 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
дааа? не заметил ![]() речь шла о полях ( без указания типа... ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Нередко встречаются и такие типы полей, для которых
термин "обнуление" вообще теряет смысл. А мы, я надеюсь, обсуждали не эти случаи. Это сообщение отредактировал(а) Crait - 15.9.2005, 12:38 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |