Этот код сильно сломан.
Вам нужно выделить strlen+1
байтов в memq
, если вы планируете скопировать туда данные (почему вы делаете sizeof
?, Что выделит 4 байта, поскольку sizeof(strlen())
равно sizeof(int)
).
Вы не можете просто назначить question
для memq
и ожидать, что данные будут скопированы. Все, что вам нужно, это перезаписать указатель, который вы только что malloc
-ed в memq
, пропустить.Вы должны сделать
strcpy(memq, question);
Вот почему вам нужен дополнительный байт в memq
, поскольку он включает нулевой терминатор.В этот момент вы можете удалить символ новой строки из memq
, как указано в другом месте.