C - Malloc и memcpy (управление памятью)

Я немного новичок в C, и мне трудно понять, как работает память, особенно встроенные функции, такие как memcpy .

Вот структура Я использую

 struct data_t {
    int datasize;   
    void *data; 
 };

А вот вспомогательная функция, с которой я ее использую:

struct data_t *data_create(int size)
{
   struct data_t *dt=malloc(sizeof(struct data_t)+size);
   dt->datasize=size;   
   dt->data="1234567890a";
   return dt;
}

Теперь в функции main у меня нет проблем делая это:

struct data_t *data = data_create(1024);
data->data="123456a";//just an example

Но это вызывает ошибку сегмента:

memcpy(data->data,"123456a",strlen("1234567890a")+1);

Мой вопрос: почему? И как мне этого избежать? Имейте в виду, что я новичок в C, поэтому то, как C работает с памятью, для меня немного ново

Спасибо.

Edit: Работает! Большое спасибо. Полностью пропустил указатель данных. Теперь по valgrind все работает нормально.

7
задан PTdude 8 October 2011 в 17:29
поделиться