Форум программистов, компьютерный форум CyberForum.ru

Как избавиться от побайтового копирования? memcpy - C++

Восстановить пароль Регистрация
 
gutalin
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 39
15.11.2015, 13:18     Как избавиться от побайтового копирования? memcpy #1
Здравствуйте,
недавно использовал код , который побайтово копирует в кольцевой буфер данные
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
static quint16 const BUF_SIZE = 4096;
static quint16 const BUF_MASK = BUF_SIZE-1;
/*запись*/
for(size_t i =0; i <= size; i++)
{
        CircleBuffer[(writePointer++) & BUF_MASK] = data[i];
}
/*чтение*/
for(size_t i =0; i <= size; i++)
{
        data[i] = CircleBuffer[(readPointer++) & BUF_MASK];
}
Насколько я понимаю - побайтовое копирование в цикле - это очень медленное решение, можно ли сделать как-нибудь по-другому?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2015, 13:18     Как избавиться от побайтового копирования? memcpy
Посмотрите здесь:

C++ Насчёт функции memcpy()
C++ Как работает memcpy???
memset, memcpy C++
Memcpy, buffer overflow. Может ли возникнуть ошибка в функции memcpy C++
Не получается использовать std::copy как memcpy? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
15.11.2015, 13:49     Как избавиться от побайтового копирования? memcpy #2
Да, надо воспользоваться memcpy. Её реализуют с большим тщанием, выжимая все производительные соки.
В данном случае функцию надо вызвать два раза, рассчитав границы.
gutalin
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 39
16.11.2015, 10:24  [ТС]     Как избавиться от побайтового копирования? memcpy #3
это же вроде небезопасная функция... хорошо, напишу аналог
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
21.11.2015, 13:16     Как избавиться от побайтового копирования? memcpy #4
Цитата Сообщение от gutalin Посмотреть сообщение
это же вроде небезопасная функция
Да уж не опаснее побайтового копирования-то. И чем написанный аналог будет лучше?

"Небезопасность" - показатель не абсолютный, его надо брать в контексте, а именно: будет ли кто-то целенаправленно атаковать данное приложение? Работает ли данный участок кода с данными, доступными атакующему? Да и обезопашивание обычно заключается в тщательной проверке входных параметров.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16829 / 5250 / 321
Регистрация: 30.03.2009
Сообщений: 14,139
Записей в блоге: 26
21.11.2015, 13:20     Как избавиться от побайтового копирования? memcpy #5
Цитата Сообщение от gutalin Посмотреть сообщение
это же вроде небезопасная функция
Она небезопасна только в том случае, если её неправильно использовать. Так же как и указатели или макросы. Поменьше читай всяких бредовых афторов
Yandex
Объявления
21.11.2015, 13:20     Как избавиться от побайтового копирования? memcpy
Ответ Создать тему
Опции темы

Текущее время: 19:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru