Получение ошибки сегментации strcpy

struct Object * newObj(char * nome, int idade, float altura) {
    struct Object *obj = (struct Object *) malloc(sizeof(struct Object));
    strcpy(obj->nome, nome); // This is the line
    obj->idade = idade;
    obj->altura = altura;
    return obj;
}

Это мой код, я не знаю, почему я получаю ошибку сегментации в strcpy.
Есть идеи?

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


person Erick Filho    schedule 05.04.2014    source источник
comment
Вам нужно выделить память для obj->nome, obj->nome = malloc(...)   -  person pNre    schedule 05.04.2014
comment
Удалите все приведения, если вы не знаете, точно что делаете, и не можете объяснить, почему приведение необходимо для правильной работы. Никогда не затыкайте рот компилятору, вместо этого попросите его говорить: используйте -Wall -Wextra и обрабатывайте все предупреждения соответствующим образом.   -  person Deduplicator    schedule 05.04.2014
comment
Является ли obj->nome указателем или массивом?   -  person tay10r    schedule 05.04.2014
comment
@pNre Это была ошибка!   -  person Erick Filho    schedule 05.04.2014
comment
@Deduplicator Спасибо за совет!   -  person Erick Filho    schedule 06.04.2014


Ответы (1)


В вашем типе struct Object элемент nome объявлен как указатель, и вам также необходимо выделить память для массива. Без выделения памяти obj->nome имеет неопределенное значение.

person ouah    schedule 05.04.2014
comment
Это была ошибка! Большое спасибо! - person Erick Filho; 05.04.2014