int a = 1; printf(a); 出现段错误,为什么?
int a = 1; printf(a); 出现段错误,为什么?
日期:2021-07-25 08:03:37 人气:1
段错误说简单点就是你访问了不该访问的内存段
比如某个地址是保留给os的,你是访问不了的
这个问题在于printf(a)在c中由于隐式类型转换int->const
char*
printf把数值1当作了本该是一个字符串地址的值,32位系统下这个地址是0x00000001,正好处在os保留的内存区域
你用c++是不会出现这样的问题的,c++的类型检查在编译期间就会帮你发现这个错误
比如某个地址是保留给os的,你是访问不了的
这个问题在于printf(a)在c中由于隐式类型转换int->const
char*
printf把数值1当作了本该是一个字符串地址的值,32位系统下这个地址是0x00000001,正好处在os保留的内存区域
你用c++是不会出现这样的问题的,c++的类型检查在编译期间就会帮你发现这个错误