写了一个简单的测试程序,想必刚入门的朋友都能看出这个错误来,但我刚看到这个错误时,产生了很大的疑问,为什么会是段错误呢?
错误语句:
#include<stdio.h>
int main()
{
char c='A';
printf("%s\n",c);
return 0;
}
报错信息:
Segmentation fault (core dumped)
修改后的语句:
printf("%s\n",&c);
产生段错误原因:
使用到的虚拟内存没有对应的物理内存就会产生段错误。
错误分析:
%s的功能其实是把一个地址的内容进行输出,上面我们传入的是一个值,而非地址,但%s会把这个值当做地址去访问,由于这个地址没有对应实际的物理内存,所以就会产生段错误。