在linux上使用printf进行分段错误

时间:2013-09-19 06:49:28

标签: c printf

@Team,

尝试通过printf打印整数值时,我意外地将语句写为

int x =10;
printf(x);

在linux中,我试图执行它时遇到分段错误。 虽然它错了但可以帮助我知道它的原因。

Strace说:

mprotect(0x7f872fb26000, 4096, PROT_READ) = 0
munmap(0x7f872fb0b000, 99154)           = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV (core dumped) +++

尝试搜索但没有成功。

3 个答案:

答案 0 :(得分:4)

printf()的第一个参数是格式字符串,它是char *指针。因此,当您执行printf(x)xchar *并尝试访问存储在地址10的字符串。但它无效,所以它给出了分段错误。

答案 1 :(得分:3)

您收到分段错误,因为printf正在解释您将其作为char *传递的10,并尝试从机器地址10读取。在运行Linux的系统上,该地址无效并导致分段错误。

答案 2 :(得分:1)

以正确的格式使用printf()。的printf( “%d”,x)的