структура населения по адресу памяти в С - PullRequest
0 голосов
/ 27 ноября 2010

У меня возникла проблема при заполнении элементов структуры адресной ссылкой, но когда это сделано с помощью элемента, то само по себе, тогда все в порядке.

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

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

с адресом памяти

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

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

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

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

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

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

1 Ответ

0 голосов
/ 27 ноября 2010

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

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

Type* pointer = somewhere;
pointer += 3;

затем pointer продвигается вперед на 3*sizeof(Type) байт - так 3 Type объектов вперед.

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

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

...