Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> копия массива, memcpy 
:(
    Опции темы
Helicopterr
Дата 31.5.2006, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



Код
struct CVertex
{
    int vx, vy;     
    DWORD color;        

};

CVertex Vershin[] =
    {
        { 300, 300,  0xfff00fff, },  // А
        { 150, 300,  0xfff00fff, },  // В

    };

VOID* pBV;
    
//Копируем массив Vershin в память
memcpy( pBV, Vershin, sizeof(Vershin) );


Подскажите пожалуйста, как мне изменить копию массива в памяти, т.е мне нужен доступ к переменной (например к vx).  

Это сообщение отредактировал(а) Helicopterr - 31.5.2006, 21:57


--------------------
people can fly
PM MAIL   Вверх
DeadSoul
Дата 31.5.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Helicopterr, и куда ты скопируешь свой массив? 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
MAKCim
Дата 31.5.2006, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

VOID* pBV;

память то не выделяется!
надо
Код

...
void* pBV=malloc(sizeof(Vershin));
memcpy(pBV,Vershin,sizeof(Vershin));

Цитата

т.е мне нужен доступ к переменной (например к vx).  

Код

...
unsigned int index=0;
for (; index<sizeof(Vershin)/sizeof(CVertex); ++i)
    (((CVertex*) pBV)+i)->vx=<изменяем>;

 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
B3cK
Дата 31.5.2006, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 29.5.2005
Где: Минск

Репутация: 1
Всего: 1



Функцию memset() смотрел? 
PM MAIL ICQ   Вверх
DeadSoul
Дата 31.5.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



MAKCim, зачем использовать malloc? Это пережиток Си без плюсов!


Цитата(B3cK @  31.5.2006,  22:14 Найти цитируемый пост)
Функцию memset() смотрел?  

А оно тут каким боком? 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
MAKCim
Дата 31.5.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

зачем использовать malloc? Это пережиток Си без плюсов!

код на сишный похож, может надо C?
если C++ то
Код

void* pBV=new CVertex [sizeof(Vershin)/sizeof(CVertex)];
 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Helicopterr
Дата 31.5.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



MAKCim
надо бы без malloc.

А разве pBV после вызова memcpy не на память с массивом будет указывать? Для чего же он тогда? Я надеялся через него...  

Это сообщение отредактировал(а) Helicopterr - 31.5.2006, 22:31


--------------------
people can fly
PM MAIL   Вверх
MAKCim
Дата 31.5.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

А разве pBV после вызова memcpy не на память с массивом будет указывать? Для чего же он тогда? Я надеялся через него... 

у тебя pBV вначале указывает на неизвестно что. Куда ты собираешься копировать данные?
Функция memcpy тут не причем, выдели память и все будет работать

Добавлено @ 22:35 
Цитата

надо бы без malloc.

выше 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Helicopterr
Дата 31.5.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



Точно пока не могу сказать, но мне похоже это и было нужно: (((CVertex*) pBV)+i)->vx 


--------------------
people can fly
PM MAIL   Вверх
Helicopterr
Дата 1.6.2006, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



Цитата(MAKCim)
выдели память и все будет работать

это понятно, вот толко у меня DirectX-совский аллокатор, а память я выделяю.
 (((CVertex*) pBV)+i)->vx происходит обнуление всех перемнных smile
Если менять попростому
Vershin[i].vx = ...
и повторно вызывать memcpy, то все работает (нынешний мой вариант), но передвижение курсора начинает подтормаживать (так как дело происходит в цикле). Вот собст. и проблема...  

Это сообщение отредактировал(а) Helicopterr - 1.6.2006, 00:39


--------------------
people can fly
PM MAIL   Вверх
MAKCim
Дата 1.6.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Helicopterr
объясни толком, что ты хочешь сделать  


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Earnest
Дата 1.6.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



У меня такое ощущение, что memcpy тоже не нужно. Чего массивы туда-сюда гонять?
Не понимаю, чем тебя не устраивает прямой доступ Vershin[i].vx без всяких memcpy... Если ты можешь скопировать какие-то данные в массив Vershin, кто мешает шарить там прямо? 


--------------------
...
PM   Вверх
UnrealMan
Дата 3.6.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(Helicopterr @  1.6.2006,  00:39 Найти цитируемый пост)
(((CVertex*) pBV)+i)->vx происходит обнуление всех перемнных 

Странно, вроде бы в отношении POD-структур всё должно работать. Кстати, запись ((CVertex *)pBV)[i].vx, думаю, будет покрасивей. 
PM MAIL   Вверх
MAKCim
Дата 3.6.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Кстати, запись ((CVertex *)pBV)[i].vx, думаю, будет покрасивей.  

все равно она раскрывается в
(*((CVertex*) pBV+i)).vx 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.