У меня есть цикл, который выглядит примерно такSegfault только при печати
while(condition){
read_some_data(source, buf, BUFSIZE);
printf(buf);
memset(buf, 0, BUFSIZE+1);
//do stuff to affect condition that does not touch buf
}
buf
является массивом символов размера BUFSIZE+1
. Странно, что если я прокомментирую printf
, программа отлично выполнится без сбоев сегментации. Только когда я пытаюсь распечатать buf
, я получаю проблему. Кроме того, ошибка seg не обязательно возникает на первой итерации петли. Обычно это занимает 6 или 7 итераций.
Кроме того, динамическая выделенная память в этой программе отсутствует.
Что произойдет, если вы правильно используете 'printf()'? то есть 'printf ("% s ", buf);' –
@DanFego Я так смущен. Это была моя проблема. – Daniel
Не нужно смущаться, пока вы что-то узнали! То есть, как использовать 'printf()' и, возможно, использовать '-Wall' и обращать внимание на предупреждения компилятора. :) –