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

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

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

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

28.02.2011, 13:11. Просмотров 676. Ответов 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 лежит ровно то, что ожидается. Подскажите пожалуйста, как справиться с такой бедой. Вариант с глобальным вектором - не применим, так как функция должна быть независимой.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2011, 13:11     Не правильная работа memcpy с вектором - параметром функции
Посмотрите здесь:

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bobrovskii
58 / 58 / 3
Регистрация: 22.01.2011
Сообщений: 187
28.02.2011, 17:38     Не правильная работа memcpy с вектором - параметром функции #2
DKOI,
C
1
memcpy(pBV, &InVertexes[0], sizeof(CUSTOMVERTEX) * VertexCount);
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
28.02.2011, 18:41  [ТС]     Не правильная работа memcpy с вектором - параметром функции #3
Спасибо!
bobrovskii
58 / 58 / 3
Регистрация: 22.01.2011
Сообщений: 187
28.02.2011, 18:45     Не правильная работа memcpy с вектором - параметром функции #4
Рости Большой
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2011, 03:18     Не правильная работа memcpy с вектором - параметром функции
Еще ссылки по теме:

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

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

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

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

Функции с символьным параметром - C++
Надо контрольные работы закрыть, помогите пожалуйста Задание 1 Принять с клавиатуры символ. Написать следующие функции: 1) Вывод на...

Функции со строковым параметром - C++
Здравствуйте. Никак не могу понять, для чего нужен string::size_type, size_t и прочее. Почему строковую функцию надо определять как...


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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.03.2011, 03:18     Не правильная работа memcpy с вектором - параметром функции #5
C++
1
2
    void* pBV;
    memcpy(pBV, &InVertexes, sizeof(InVertexes));
запись куда производится ?
Yandex
Объявления
01.03.2011, 03:18     Не правильная работа memcpy с вектором - параметром функции
Ответ Создать тему
Опции темы

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