powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / несколько буферов в один(С++)
15 сообщений из 15, страница 1 из 1
несколько буферов в один(С++)
    #34476256
______neznayka___
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть несколько буферов фиксированного размера:
BYTE *pbuf1;
BYTE *pbuf2;
BYTE *pbuf2;

Как обьединить эти буферы последовательно в один :
BYTE *pMainBuf;
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34476264
daevaorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скопировать туду друг за другом
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34476705
aak__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давно этим не занимался, но смысл такой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
int size1 = ...// размер pbuf1
int size2 = ...// размер pbuf2
int size3 = ...// размер pbuf3

BYTE* pMainBuf = new BYTE[size1+size2+size3];

// copy 1 part
pMainBuf = (BYTE*)memcpy(pMainBuf, pbuf1, size1);
// add 2 part
pMainBuf = (BYTE*)memcpy(pMainBuf+size1, pbuf2, size2);
// add 3 part
pMainBuf = (BYTE*)memcpy(pMainBuf+size1+size2, pbuf3, size3);

...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34476848
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aak__давно этим не занимался, но смысл такой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
int size1 = ...// размер pbuf1
int size2 = ...// размер pbuf2
int size3 = ...// размер pbuf3

BYTE* pMainBuf = new BYTE[size1+size2+size3];

// copy 1 part
pMainBuf = (BYTE*)memcpy(pMainBuf, pbuf1, size1);
// add 2 part
pMainBuf = (BYTE*)memcpy(pMainBuf+size1, pbuf2, size2);
// add 3 part
pMainBuf = (BYTE*)memcpy(pMainBuf+size1+size2, pbuf3, size3);



И не занимайтесь. За такое расстреливать надо.
Намек: выравнивание, переносимость
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34476931
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) пишет:
> И не занимайтесь. За такое расстреливать надо.
> Намек: выравнивание, переносимость

Выравнивание ЧЕГО ? переносимость ЧЕГО ? Массива байт ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34476988
aak__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
была задача последовательно объединить три массива в один
давайте подходить конструктивно. приведите код, который по вашему мнению будет верен.
может быть, я с ним соглашусь, и тогда меня действительн надо будет
авторрасстреливать
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34477065
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aak__была задача последовательно объединить три массива в один
давайте подходить конструктивно. приведите код, который по вашему мнению будет верен.
может быть, я с ним соглашусь, и тогда меня действительн надо будет
авторрасстреливать

Я так понял, Gluk имел ввиду, что у вас указатель поползет.
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34477074
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int size1 = ...// размер pbuf1
int size2 = ...// размер pbuf2
int size3 = ...// размер pbuf3

BYTE* p, *pMainBuf = new BYTE[size1+size2+size3];

// copy 1 part
p = (BYTE*)memcpy(pMainBuf, pbuf1, size1);
// add 2 part
p = (BYTE*)memcpy(p+size1, pbuf2, size2);
// add 3 part
p = (BYTE*)memcpy(p+size2, pbuf3, size3);

Наверное, так.
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34477139
aak__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, не совсем. тут нужно нарисовать на бумажке.

выделяется область памяти для pMainBuf размером 3-х исходных массивов.
pMainBuf - адрес начала области памяти, туда копируем первый массив.
теперь занята область [pMainBuf, pMainBuf + size1]
следующий массив должен быть размещен по адресу pMainBuf + смещение (которое равно размеру первого массива, т.е. size1)
т.е. копируем в область памяти начиная с адреса [pMainBuf + size1] size2 байт.
и т.д.

в случае с pMainBuf и p данные размещаются в различные области... хотя, м.б. пятница влияет на мышление и я не прав..
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34477163
aak__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, указатель точно плыл.
так будет корректнее - сам адрес pMainBuf не изменяется, только добавляютсмя данные по различным смещениям относительно исходного адреса

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
int size1 = ...// размер pbuf1
int size2 = ...// размер pbuf2
int size3 = ...// размер pbuf3

BYTE* pMainBuf = new BYTE[size1+size2+size3];

// copy 1 part
memcpy(pMainBuf, pbuf1, size1);
// add 2 part
memcpy(pMainBuf+size1, pbuf2, size2);
// add 3 part
memcpy(pMainBuf+size1+size2, pbuf3, size3);
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34477172
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aak__да, указатель точно плыл.
так будет корректнее - сам адрес pMainBuf не изменяется, только добавляютсмя данные по различным смещениям относительно исходного адреса
...
У меня как же коррекно, только красивей и симметричней ;-P
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34477278
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quo]> И не занимайтесь. За такое расстреливать надо.
> Намек: выравнивание, переносимость[/quot]

Выравнивание ЧЕГО ? переносимость ЧЕГО ? Массива байт

Подписался.

Намёк: можно даже без memcpy (хотя какие могут быть проблемы переносимости у стандартной функции из <string.h>? Мы ж о переносимости бинарников не говорим, её вообщем то никто и никогда и не обещал), работайте со всеми тремя буферами как с массивами, копируйте в цикле, тип то у всех трёх одинаковый...

PS - всё вышесказанное предполагает что длины первых трёх буферов автору известны...
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34477328
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh пишет:
> Я так понял, Gluk имел ввиду, что у вас указатель поползет.

Да нет, Gluk сглюкнул просто.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34477369
aak__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n
PS - всё вышесказанное предполагает что длины первых трёх буферов автору известны...

да, это было в изначальной постановке

автор
есть несколько буферов фиксированного размера
...
Рейтинг: 0 / 0
несколько буферов в один(С++)
    #34479435
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Akh пишет:
> Я так понял, Gluk имел ввиду, что у вас указатель поползет.

Да нет, Gluk сглюкнул просто.
Posted via ActualForum NNTP Server 1.4

Ага, мое любимое занятие.
Только, боюсь, следующим постом будет: "ПОМОГИТЕ у меня полетел ХИП (срочно)"
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / несколько буферов в один(С++)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]