2010-11-27 4 views
0

У меня возникла проблема при заполнении элементов структуры ссылкой на адреса, но когда это делается с использованием элемента, то он сам, тогда это хорошо.Структура популяции по адресу памяти в C

со структурой memmber

memcpy(&(AVPFieldStructureObj->resource_value),data_start,actual_data_length); 

С памятью Адрес

memcpy((&AVPFieldStructureObj+fieldOffset),data_start,actual_data_length); 

где actual_data_length является размер varibale и data_start является указатель, указывающий на буфер данных.

с памятью его подача значения мусора, когда я напечатать поле и после выполнения целого я получаю ошибку сегментации, но при отладке с помощью GDB программы возбужденной normally.there не был никакой ошибки сегментации

пожалуйста предложить

заранее спасибо

с уважением, Soheb

ответ

0

fieldOffset я считаю, это смещение в байтах?

Если вы делаете что-то вроде:

Type* pointer = somewhere; 
pointer += 3; 

затем pointer получает перемещается вперед 3*sizeof(Type) байт - так 3 Type объектов вперед.

Так что в вашем коде в последнем варианте вы не смещаете адрес на fieldOffset байтов, а на fieldOffset*sizeof(AVPFieldStructureObj) байтов.

Вы можете обойти это, временно наведя указатель на char*.

+0

Спасибо, Kos, очень жаль, что я пропустил эту логику или концепцию, теперь она работает нормально ..... поэтому правильный синтаксис - memcpy (((char *) AVPFieldStructureObj + fieldOffset), data_start, actual_data_length); – 2010-11-27 15:09:33

Смежные вопросы