Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
#1

Не правильная работа memcpy с вектором - параметром функции - C++

28.02.2011, 13:11. Просмотров 704. Ответов 4
Метки нет (Все метки)

Есть функция

C++
1
2
3
4
5
6
7
8
int
InitX( CUSTOMVERTEX InVertexes[], int VertexCount )
{
    //...
    void* pBV;
    memcpy(pBV, &InVertexes, sizeof(InVertexes));
    //...
}
В основной программе описан вектор
C++
1
CUSTOMVERTEX Vertexes[10]; //(CUSTOMVERTEX - стурктура)
В программе вызывается
C++
1
InitX( Vertexes, 10 );
Просматривая дебагером обнаружил, что в *pDV лежит не Vertexes, как то ожидается, а какая-то муть.
Если использовать
C++
1
memcpy(pBV, &InVertexes[0], sizeof(InVertexes));
то правильно копируется ровно первое поле нулевого вектора, а дальше то же самое что и в первом варианте. Однако если InVertexes описывается внутри функции или глобально, то в *pDV лежит ровно то, что ожидается. Подскажите пожалуйста, как справиться с такой бедой. Вариант с глобальным вектором - не применим, так как функция должна быть независимой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2011, 13:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не правильная работа memcpy с вектором - параметром функции (C++):

Memcpy, buffer overflow. Может ли возникнуть ошибка в функции memcpy - C++
Бывает ли на практике такое, что код #define size 1000; // some value int x, y; /* ... */ memcpy(y, x, (size + 1) * sizeof(int)); ...

Работа функции memcpy - C++
Подскажите пожалуйста: 1. Каким образом работает функция memcpy(&buf1,&genday,2) и какого типа данные окажутся в buf1? Заранее всем...

Насчёт функции memcpy() - C++
Начинаяю использовать эту функцию.Её синтаксис: void memcpy(void *to, const void *from, size_t count); Вопрос_1: Что такое...

Работа с вектором - C++
Здравствуйте! Помогите, пожалуйста разобраться..я только изучаю язык. Как в данной программе реализовать графический интерфейс? Чтобы...

Работа с вектором - C++
Задание: Вектор В сформировать из целых случайных чисел в диапазоне . а) найти минимальный элемент вектора. б) найти произведение Р...

Работа с вектором - C++
Помогите разобраться что к чему, примеров найти не смог: Спасибо.

4
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
28.02.2011, 17:38 #2
DKOI,
C
1
memcpy(pBV, &InVertexes[0], sizeof(CUSTOMVERTEX) * VertexCount);
1
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
28.02.2011, 18:41  [ТС] #3
Спасибо!
0
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
28.02.2011, 18:45 #4
Рости Большой
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.03.2011, 03:18 #5
C++
1
2
    void* pBV;
    memcpy(pBV, &InVertexes, sizeof(InVertexes));
запись куда производится ?
0
01.03.2011, 03:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2011, 03:18
Привет! Вот еще темы с ответами:

Работа с вектором из класса - C++
Доброго времени суток ! Не до конца понимаю "Как это работает"© Есть вектор указателей, объявленный в main() ...

Работа со string, который под вектором - C++
Не могу никак понять как удалить символ из строчки, которая является элементом вектора. Честно гуглил и в русском, и в английском...

Перегрузка функции\Правильная рац.дробь - C++
Условие задачи: сделать правильную рац. дробь и добавить перегрузку операций. #include <iostream> #include <Windows.h> class...

Класс правильная рациональная дробь. Конструкторы и функции класса - C++
Данные класса: числитель и знаменатель правильной рациональной дроби, целая часть. Функции класса: сложение, вычитание, умножение,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru