時,我有一個循環,看起來像這樣段錯誤只打印
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