У меня есть функция, которая создает дубликат для определенного массива. Структура моего кода:
typedef struct {
int* data;
unsigned int len;
} intarr_t;
Функция, которую я написал:
intarr_t* intarr_copy( const intarr_t* ia )
{
unsigned int len;
intarr_t* newia = malloc(sizeof(intarr_t));
assert (newia);
newia->data = malloc(sizeof(int)*len);
newia->len = len;
if (newia == 0)
{
return NULL;
}
else
{
memcpy (newia->data, ia->data, len*sizeof(int));
}
return 0;
}
Когда я тестировал функцию, она остановила мою функцию и сообщила, что мое утверждение для ia не выполнено. Единственное место, где у меня есть ia, это memcpy. Но я даже не делал утверждения в своей функции. Кто-нибудь знает, почему это дало мне ошибку утверждения?
len
значением. Скорее всего, вы действительно хотите сделать что-то вродеunsigned int len = ia->len;
- person Joachim Isaksson   schedule 23.11.2014NULL
,0
и тому подобное, если вы действительно имеете в виду одно и то же. другое дело, что вы утверждаете, правильно ли распределеноnewia
, а затем проверяете его с помощью оператора if. Я действительно не знаю, что этот код вообще должен делать, поскольку вы копируете случайные объемы данных в зависимости от длины... - person rowan.G   schedule 23.11.2014unsigned int len = ia->len;
и intXXX_t — зарезервированное системой имя. - person BLUEPIXY   schedule 23.11.2014