Вы выделяете достаточно места для struct node
, затем realloc
, увеличивая его до 10 байтов, затем обращаясь к члену c
, который из-за структуры node
, вероятно, превышает 10-й байт.Это вызывает segfault.
Кроме того, если тот, кто занимается бизнесом, решит, что ему нужно переместить блок памяти, realloc
возвращает указатель на новое местоположение, но указатель обратно в main
все еще указываетна старый блок, который был восстановлен.Это также может привести к segfault.
Также в этом коде:
int *tmp;
tmp = (int*)realloc(ptr, 10);
if(!tmp)
{
ptr->array=tmp;
ptr->array[0] = 23;
}
если !tmp
, вы получаете доступ к указателю NULL
, потому что выВы присваиваете tmp
для ptr->array
, а затем получаете доступ к 0-му элементу.Это также может привести к segfault.
В вашем коде много проблем.Возможно, вам придется переписать большую часть этого.