Почему Виндовз иногда не работает...?

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Почему Виндовз иногда не работает...?

Сообщение vg »

Ответ - потому, что у MS иногда работают такие программисты и советчики. :(
http://msdn.microsoft.com/msdnmag/issues/0400/c/

...
Stylistically, I prefer assignment in the body because there's more room for formatting and comments, and you can write things like

x=y=z=0;

or

memset(this,0,sizeof(this));

Note that the second snippet is decidedly non-object-oriented...


см. в контексте.
Аватара пользователя
sz
Маньяк
Сообщения: 1266
Зарегистрирован: 17 фев 2003, 19:34

Сообщение sz »

И что не нравится?
Прочел. Никаких откровенных глупостей не обнаружил.

Ну разве вот тут немного коряво выразился:
memset(this,0,sizeof(this));
Note that the second snippet is decidedly non-object-oriented...

Но мысль-то понятна. Что если у тебя есть виртуальные функции, то ты этим memset vptr затрешь нафиг.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Старина Зотин писал(а):И что не нравится?
Прочел. Никаких откровенных глупостей не обнаружил.

Ну разве вот тут немного коряво выразился:
memset(this,0,sizeof(this));
Note that the second snippet is decidedly non-object-oriented...

Но мысль-то понятна. Что если у тебя есть виртуальные функции, то ты этим memset vptr затрешь нафиг.
В этом-то и дело... И он об этом не говорит, а скорее всего и не знает.

Второе (ты не заметил), что если класс дерайвед, то в рантайме появляется ещё одно скрытое от программера поле (кроме ccылки на vtbl) для ссылки на базовый класс. С ним будет тоже самое, что и с виртуальными функциями. Краш двойной. :lol:
Аватара пользователя
sz
Маньяк
Сообщения: 1266
Зарегистрирован: 17 фев 2003, 19:34

Сообщение sz »

> В этом-то и дело... И он об этом не говорит, а скорее всего и не знает.

С чего это ты решил, что он этого не знает?

> Второе (ты не заметил), что если класс дерайвед, то в рантайме
> появляется ещё одно скрытое от программера поле

Не всегда и не обязательно.
От реализации компилятора зависит.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

>>С чего это ты решил, что он этого не знает?
Это я просто ... у меня сегодня ворчливость повышенная была. :lol: Зря, конечно, я выразился.
Аватара пользователя
Yury
The L'ony
Сообщения: 26202
Зарегистрирован: 22 янв 2004, 13:48
Откуда: Мирный -> Vancouver
Контактная информация:

Сообщение Yury »

< почикано самоцензурой :) >
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

Старина Зотин писал(а):Что если у тебя есть виртуальные функции, то ты этим memset vptr затрешь нафиг.
Ну на самом деле ТАКИМ memset'ом ты ничего не затрешь. если бы sizeof() был от *this, то тогда еще туда-сюда ..
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

poneyhot писал(а):
Старина Зотин писал(а):Что если у тебя есть виртуальные функции, то ты этим memset vptr затрешь нафиг.
Ну на самом деле ТАКИМ memset'ом ты ничего не затрешь. если бы sizeof() был от *this, то тогда еще туда-сюда ..
Кстати... :lol: Это ещё в большей степени прикалывает в отношении внимательности деятелей от MS :o Уже который раз у них, в статьях MSDN, "очепятки" :lol:
Ответить