指针的学习
来源:互联网 发布:java 1到100阶乘 编辑:程序博客网 时间:2024/05/16 15:38
前一段时间学习了《代码大全》的“不常见的数据类型”,对此作一个小结,作为对知识点的回顾。不期望自己能记住多少,但希望通过梳理能够在用到的时候有点记忆,在写代码的时候有点印象足矣。到时可以翻开Blog,再细细学习。
指针的使用在我们编程过程中是最容易出现错误的领域之一,尤其是现在经常出现的安全问题,特别是缓冲区溢出,估计占50%的漏洞在这里出现。
指针的理解需要理解两个内容:内存中的某处位置和如何解释该位置中的内容。根据你指针的类型不同,指针所解释的数据类型也不一样。所以一切都取决于指向该内存的指针的基类型。
“内存破坏”,即当你通过一个坏了的指针变量赋值时,会把数据写入本不该写值的内存区域。
如何正确的使用指针,书中主要归纳了如下几点:
1.把指针操作限制在子程序或者类里面,这样这些代码就能相对独立于数据的实现细节,增大了其他程序内重用这些代码的 可能性;
2.同时声明和定义指针;
3.把与指针分配相同的作用域中删除指针;
4.在使用指针之前检查指针;
5.先检查指针所引用的变量再使用它;
6.用狗牌字段来检测损毁的内存;
7.增加明显的冗余;
8.用额外的指针变量来提高代码清晰度;
9.简化复杂的指针表达式;
10.画一个图,便于理解;
11.按照正确的顺序删除链表中的指针;
12.分配一篇保留的内存后备区域;
13.粉碎垃圾数据;
14.在删除或者释放指针之后把它们设为空值;
15.在删除变量之前检查非法指针;
16.跟踪指针分配情况;
17.编写覆盖子程序,集中实现避免指针问题的策略;
18.采用非指针的技术。
书上的条条框框真多,先大概的读一遍,有个印象,对于以后的使用,不懂得拿起这本将近1000页的经典再来回味一遍!
指针的使用在我们编程过程中是最容易出现错误的领域之一,尤其是现在经常出现的安全问题,特别是缓冲区溢出,估计占50%的漏洞在这里出现。
指针的理解需要理解两个内容:内存中的某处位置和如何解释该位置中的内容。根据你指针的类型不同,指针所解释的数据类型也不一样。所以一切都取决于指向该内存的指针的基类型。
“内存破坏”,即当你通过一个坏了的指针变量赋值时,会把数据写入本不该写值的内存区域。
如何正确的使用指针,书中主要归纳了如下几点:
1.把指针操作限制在子程序或者类里面,这样这些代码就能相对独立于数据的实现细节,增大了其他程序内重用这些代码的 可能性;
2.同时声明和定义指针;
3.把与指针分配相同的作用域中删除指针;
4.在使用指针之前检查指针;
5.先检查指针所引用的变量再使用它;
6.用狗牌字段来检测损毁的内存;
7.增加明显的冗余;
8.用额外的指针变量来提高代码清晰度;
9.简化复杂的指针表达式;
10.画一个图,便于理解;
11.按照正确的顺序删除链表中的指针;
12.分配一篇保留的内存后备区域;
13.粉碎垃圾数据;
14.在删除或者释放指针之后把它们设为空值;
15.在删除变量之前检查非法指针;
16.跟踪指针分配情况;
17.编写覆盖子程序,集中实现避免指针问题的策略;
18.采用非指针的技术。
书上的条条框框真多,先大概的读一遍,有个印象,对于以后的使用,不懂得拿起这本将近1000页的经典再来回味一遍!
- C 指针的学习
- 函数指针的学习
- 指针的学习
- 指针的学习
- 指针的学习.
- 指针的学习
- C++的指针学习
- 函数指针的学习,
- 函数指针的学习
- *指针的基础学习*
- 指针的学习
- 指针的学习
- 函数指针的学习
- 指针的学习
- 指针的学习
- 指针的学习
- 指针数组的学习
- C++的指针学习
- Duilib编译成静态库
- undo表空间重建和缩小undo表空间
- 数据结构-线性表-双向链表
- Exchange Server 2010 OWA基于表单身份验证剖析
- Cycling
- 指针的学习
- 在字符串中查找连续重复的最长子串的C++实现
- 古人两个通病:懒和穷
- c语言详解sizeof & sizeof函数总结
- hdu 4283
- 如何使用打成jar文件
- char数组存储中英文字符
- 13.删除单链表中重复的元素
- *** glibc detected *** double free or corruption (out) ***