A有下一个c ansi代码,在Linux版本2.6.32-431.11.2.el6.x86_64中
fprintf(fpOut, "%s",cBuffer);
其中cBuffer是指向char的指针,如
int bfnAddOutputFile(FILE *fpOut, char *cBuffer){/**/
fprintf(fpOut, "%s",cBuffer);
//code
return ( TRUE );
}
执行fprintf时,生成核心转储
Program received signal SIGSEGV, Segmentation fault.
0x00000038b2e6723e in fputs () from /lib64/libc.so.6
有一个最大长度的字符可以发送到fprintf,如果它是什么数字?
答案 0 :(得分:3)
cBuffer
可能不包含空终止符,这会使fprintf
超出内存范围。
输出C字符串时,printf
- 系列函数仅在遇到 null-terminator ('\0'
)时停止,否则可以继续,直到他们尝试输出一块不属于的内存到您的程序,这会导致分段错误。