时,我有一个循环,看起来像这样段错误只打印
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);' – 2012-01-17 21:54:10
@DanFego我很尴尬。那是我的问题。 – Daniel 2012-01-17 21:55:53
只要你学到了东西,就不用尴尬!也就是说,如何使用'printf()'或者使用'-Wall'并注意编译器警告。 :) – 2012-01-17 21:58:10