什么是"空指针赋值错误"?

sha*_*oth 13 c pointers

一对C指针面试问题这里是:什么是空指针赋值错误?

我已经google了一段时间,没有看到任何合理的解释.那是什么?试图通过空指针写?某种架构或环境特定的东西?究竟是什么错误?

Pay*_*aya 20

http://www.faqs.org/qa/qa-3786.html

NULL指针赋值是一个运行时错误它由于各种原因而发生,一个是您的程序试图访问非法内存位置.非法位置意味着位置位于操作系统地址空间或其他进程内存空间中.在stdio.h中,NULL定义为0因此,每当您的程序尝试访问第0个位置时,操作系统会因运行时分配错误而终止程序,因为第0个位置位于操作系统地址空间中,操作系统不允许访问其地址用户程序的空间.

示例代码:

int* ptr = NULL;  
*ptr = 3;
Run Code Online (Sandbox Code Playgroud)

说明:
几乎在每个系统上,都保留地址0.系统不允许您写入该位置.如果您尝试,您将获得运行时异常(访问冲突,分段错误等).