memcopy и 2d массивы - PullRequest
       25

memcopy и 2d массивы

0 голосов
/ 08 февраля 2011
struct item_CHECK_LIST_data
{

    char    list[MAX_CHECK_LIST_OPTIONS + 1][MAX_ITEM_TEXT_LEN];
    char    checkeditems[MAX_CHECK_LIST_OPTIONS + 1];//which are checked

    char    number_of_options;
};

Могу ли я скопировать это с помощью memcopy?

У меня странная ошибка, которая объяснялась бы невозможностью memcopy ...

Ответы [ 3 ]

5 голосов
/ 08 февраля 2011

Да, вы можете memcpy двумерные массивы в C, при условии, что они на самом деле являются двумерными массивами, а не одномерным массивом указателей.Двумерные массивы расположены в памяти непрерывно, поэтому memcpy будет правильно читать все блоки.Однако, если ваш массив представляет собой 1D-массив указателей на несколько 1D-массивов, то memcpy будет копировать только указатели, и в результате вы получите неглубокую копию, а не глубокую копию.

2 голосов
/ 08 февраля 2011

Вы использовали sizeof (), чтобы найти, сколько копировать?Элементы структуры могут быть дополнены, так что размер больше, чем сумма частей

0 голосов
/ 08 февраля 2011

Если вы хотите скопировать только структуру в целом, не используйте memcpy. Просто сделайте задание, для этого создан токен =.

...