何为指针(二)未初始化和非法的指针
来源:互联网 发布:家常菜教学视频软件 编辑:程序博客网 时间:2024/06/10 15:13
Pointers or C 英文版翻译
原文:6.5 Uninitialized and Illegal Pointers
6.5 未初始化和非法的指针
下面这段代码举例说明了一个非常普遍的问题
int *a;*a = 12;
声明了一个名为 a 的指针变量,并且把12赋值给了它指向的位置。但是,指针指向哪里呢?我们声明了这个变量,却从来没有初始化它。所以我们没法预测12被存储在哪里。在这方面,指针和其他变量没有任何不同。如果变量是静态的,那么他会被初始化为0;但是,如果变量是自动(存储)的,他压根就没有被初始化。这两种情况下,将会声明一个指向任意一个存储整数的内存的int型指针。
所以,当这个赋值操作被执行时,会发生什么?如果你运气好,a的初始值将是一个非法地址,并且赋值操作将导致一个程序终止的错误。在UNIX 系统上,这个错误被叫做“内存段异常”或者“内存错误”。这表明你在试图使用超出你的程序被允许的范围之外的内存位置。在PC上运行的Windows,间接上,未初始化或者非法指针是引发异常的原因之一
在要求整数在特定边界处的机器上,使用一个对于它的类型是错误边界的地址也会造成错误。这个错误在UNIX系统上被称为“总线错误(bus error)”;
一个更加严重的问题是,当这个指针意外的存储这一个合法的地址。接下来要发生的事情 很简单:在那个位置的值被修改了,尽管你没有想要修改它。像这样的错误很难被发现,因为可能错误的代码和应该被改变值的代码完全没有关系。要十分谨慎,在使用指针变量间接指向之前被初始化。
译者:小风code
时间:2017-11-4
阅读全文
0 0
- 何为指针(二)未初始化和非法的指针
- 未初始化和非法的指针
- 未初始化和非法的指针
- 未初始化和非法的指针
- 未初始化的指针
- C++使用未初始化的指针和赋值为0的指针
- 空指针和未初始化的指针的区别
- 空指针和未初始化的指针的区别
- 何为指针(一)认识指针
- 何为指针(三)空指针
- 指针未初始化问题
- 何为函数指针
- void指针 null指针 未初始化指针
- 何为指针(四)指针,解引用和左值
- 指针未初始化 带来的危害
- 函数指针及其的运用(上)——何为函数指针
- 函数指针及其的运用(上)——何为函数指针
- 函数指针及其的运用(上)——何为函数指针
- python备忘录
- 1056. 组合数的和(15)——C语言
- 0001
- eclipse中使用ddms查看android应用线程状态
- 弱校胡策 cubicp(数学)
- 何为指针(二)未初始化和非法的指针
- <VRTK学习二>vrtk ControllerEvent
- 电池的电压、电流(可充电电池)
- 设计模式(3)——工厂方法 Factory Method
- java深度学习(一)Maven创建一个新的ND4J工程
- Java并发编程:线程池的使用
- css3实现四个方向三角
- 文章标题
- 文章标题