node *p,q;
совпадает с:
node *p;
node q;
So
q = (узел *) malloc (sizeof (узел));
Ошибка, поскольку вы присваиваете значение указателя для структуры.
Вы также не включаете ни то, ни другое, поэтому ваш компилятор не знает, что такое подпись для malloc
, возможно, поэтому вы не получаете сообщений об ошибках или предупреждений, предупреждающих вас о неверном назначении.
Если вы спрашиваете о пространстве между двумя malloc
областями памяти, malloc не обязан (и обычно не) выделяет области памяти непрерывно. Обычно имеется выделенный фрагмент наименьшего размера (меньшие суммы округляются до этого), а также могут быть некоторые бухгалтерские данные перед указателем, который возвращает malloc.