Здравствуйте, уважаемые эксперты! Не проводил ли кто-нибудь из вас тестов, или быть может есть какая-ибудь официальная информация рассказывающая о разнице в работе функций memset и FillMemory(а как вариант и ZeroMemory) на платформе Win32. В частности меня интересует что быстрее и надёжнее работает memset или ZeroMemory. То что FillMemory и ZeroMemory не переносимы я знаю, так же я знаю, что ZeroMemory(p,size) это не define memset(p,0,size). Помогите своими знаниями, на всякий случай вот дополнительная информация: обнуляемая память исчисляется единицами мегабайт, но происходить это должно достаточно часто (25-30 раз в секунду). Заранее спасибо, Александр.
Доброе время суток, Александр! На самом деле Александр вы не правы. Если вы покопаетесь в исходных кодах и заголовочных файлах то найдете следующие вещи: winbase.h #define FillMemory RtlFillMemory #define ZeroMemory RtlZeroMemory winnt.h #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) Однако же функции RtlZeroMemory и RtlFillMemory для 64 битных ОС являются импортируемыми из ДЛЛ, но так как вас интересует именно вин32 то спокойно можете пользоваться функцией memset или ZeroMemory так как они совершенно одинаковы. Ответ отправлен: 07.02.2003, 10:30 Отправитель: vitya Отвечает Yuri Gordienko
Добрый день, Александр! FillMemory и ZeroMemory не просто непереносимы, а считаются устаревшими, соответственно использовать их не рекомендуется. Способы очистки у них ИМХО одинаковые. По скорости скажу, что они близки к идеалу, поэтому ничего не выиграешь, - изменяй свой алгоритм. Скорость проверить просто, - замеряй время-проведи большое число циклов - замеряй время - разницу времени подели на число циклов Удачи
Ответ отправлен: 07.02.2003, 12:25 Отправитель: Yuri Gordienko Отвечает xiron
Здравствуйте, Александр! Ну рассуждаем логично, и последовательно. смотрим в сырцах ZeroMemory, и обнаруживаем достаточно странную вещ: #define ZeroMemory RtlZeroMemory #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) как видим это одно и тоже. Такс а теперь перейдем к FillMemory, о обнаруживаем не менее странный кусок кода: #define FillMemory RtlFillMemory #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) Так что с облегчением! Все новое это хороше забытое старое! Удачи. Ответ отправлен: 07.02.2003, 10:57 Отправитель: xiron
Вопрос № 569
Hi all! Программирую в линуксе на gcc. Нужны функции работы с графикой. Накидайте в мыло. Плиз.
Здравствуйте, Kiselev! Графика для gcc понятие абстрактное. Тебе нужны библиотеки, которые с этой графикой работают. Библиотек таких масса, - рекомендовать конкретно ничего не буду, т.к. непонятно что за графику ты имеешь в виду. Ответ отправлен: 07.02.2003, 16:25 Отправитель: Yuri Gordienko Отвечает cin.tie(&cout)
Добрый день, Kiselev! gcc - компилятор, а не язык программиирования. Под консоль? Под иксы? под консоль по-моему как таковых их нет, да под консоль графика и не нужна. Хотя в инете может где-то и есть, может какой-нибудь человек и написал библиотечку, но я не знаю. Под иксы: Xlib manual Gtk+ manual Qt manual
Ответ отправлен: 07.02.2003, 15:49 Отправитель: cin.tie(&cout)
Вопрос № 570
1) Дайте ссылочку на хороший eУчибник по C++ для чайников, plz Заранее благодарю...
Здравствуйте, pcgamer! На "Учибник" ссылку дать сложно, но поищи Липмана (lipman.zip) - вполне продвинутая книга. Ответ отправлен: 07.02.2003, 16:27 Отправитель: Yuri Gordienko Отвечает Jadd
Здравствуйте, pcgamer! Тут есть хорошие книги по с/с++ http://anatolix.naumen.ru/books.htm Ответ отправлен: 07.02.2003, 15:33 Отправитель: Jadd Отвечает Ramzes
Доброе время суток, pcgamer! зайди на www.proglib.ru там естъ много хороших учебников Ответ отправлен: 08.02.2003, 11:04 Отправитель: Ramzes Отвечает Илья
Добрый день, pcgamer! Посмотрел ответ Jadd'а (ой не хорошо подглядывать:), так там Бьерн Страуструп (классика) только на англ. языке. Посмотри её где-нибудь или на Proge.ru. Там еще куча разных книг по всем языкам. Ответ отправлен: 08.02.2003, 03:27 Отправитель: Илья
Вопрос № 571
Доброе время суток , эксперты ! ******************************* 1.При запуске приложения под отладчиком VC++ хук ставится. Сборка Debug.А при простом запуске не ставится. В чем проблема ? 2.Что за элемент используется в VC++,когда выдается список членов ListMembers ? Или это просто диалог с ListCtrl ? Тогда как там делать курсор постоянной длины ? Буду благодарен любым ответам.
Приветствую Вас, IceWINteR! 1. Так сразу трудно сказатъ. Скажу толъко, что при запуске программы под отладчиком, тот при исполнении программы иногда корректирует некоторые ошибки, которые при простом запуске программы не проходят. 2. ну так это может бытъ что угодно, Dialog c CListCtrl или CWnd с CListCtrl, какая разница ? А вот насчет курсора постоянной длины я че то не врубился. Ответ отправлен: 08.02.2003, 11:16 Отправитель: Ramzes Отвечает xiron
Доброе время суток, IceWINteR! Ну засчет первого вопроса. Точно не могу сказать, нужно больше информации а еще лудше код посмотреть. Ну если ты не вызываеш кочечно ASSERT( /* создаеш хук */ ) ;) то должно быть все ОК. Вопрос 2 Это или ListCtrl или чтото в роде SECListCtrl Stingray-овский лист, но это почти то же самое. А насчет курсора не понял, наверное ты имееш ввиду селекшн ? Ну надо в MSDN посмотреть, на первый взгляд BOOL SetColumnWidth( int nCol, int cx ); поможет Удачи! Ответ отправлен: 10.02.2003, 16:38 Отправитель: xiron
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.