首页 文章

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

提问于
浏览
-1

@球队,

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

int x =10;
printf(x);

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

斯特拉斯说:

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

尝试搜索,但没有成功 .

3 回答

  • 4

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

  • 1

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

  • 3

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

相关问题