数据链路层及交换机的简单实用【笔记】
2014-04-18 23:49
211 查看
转载:/article/1502650.html
在指针满天飞的C/C++世界,是否已经熟悉并默认了一些东西,而让我们失去了更深刻思考的能力?也许你对new/delete 或者malloc/free已经司空见惯,可曾相关在你手下delete/free一块对内存,到底发生了什么?请看下面的程序:[cpp] view plaincopyprint?
char *point = (char *) malloc(100);
strcpy(point, “hello”);
free(point); // Be careful here,point 所指的内存被释放,but point 所指的地址仍然不变
…
if(point != NULL) // 没有起到防错作用
{
strcpy(point, “jackery”); // error
}</span>
所谓的C++/C free or delete 一个变量指针或者数组,是做了哪些事情呢?原来free和delete只是把指针所指的内存给释放掉,但并没有把指针本身干掉。如果你follow一下,就会发现指针point被free以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,point成了“野指针”。如果此时不把point设置为NULL,会让人误以为point是个合法的指针。如果程序比较长,我们有时记不住 point所指的内存是否已经被释放,在继续使用point之前,通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便point不是NULL指针,它也不指向合法的内存块。你可能还有疑问,有了malloc/free (C/C++标准可函数),为何还要来个new/delete (c++运算符)?点击这里,你可以找到答案!
在指针满天飞的C/C++世界,是否已经熟悉并默认了一些东西,而让我们失去了更深刻思考的能力?也许你对new/delete 或者malloc/free已经司空见惯,可曾相关在你手下delete/free一块对内存,到底发生了什么?请看下面的程序:[cpp] view plaincopyprint?
char *point = (char *) malloc(100);
strcpy(point, “hello”);
free(point); // Be careful here,point 所指的内存被释放,but point 所指的地址仍然不变
…
if(point != NULL) // 没有起到防错作用
{
strcpy(point, “jackery”); // error
}</span>
所谓的C++/C free or delete 一个变量指针或者数组,是做了哪些事情呢?原来free和delete只是把指针所指的内存给释放掉,但并没有把指针本身干掉。如果你follow一下,就会发现指针point被free以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,point成了“野指针”。如果此时不把point设置为NULL,会让人误以为point是个合法的指针。如果程序比较长,我们有时记不住 point所指的内存是否已经被释放,在继续使用point之前,通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便point不是NULL指针,它也不指向合法的内存块。你可能还有疑问,有了malloc/free (C/C++标准可函数),为何还要来个new/delete (c++运算符)?点击这里,你可以找到答案!
相关文章推荐
- 企业交换机学习笔记三二层交换机与三层交换机的简单区别
- Flume 学习笔记(1) 单节点安装与简单实用
- git简单实用笔记
- devi into python 笔记(五)异常 文件操作 sys os glob模块简单实用
- nginx 简单实用配置——笔记篇
- 如何学习android(看stay4it的笔记)+android stdio简单实用简介
- 个人笔记 AVfoundation框架的简单实用 自定义录制视频界面
- 曾经的笔记迁移__自己封装的通用链表_简单实用
- 工作笔记(二)spring jdbcTemplate多数据源简单实用
- 温故而知新--Linux学习笔记(二)实用的简单命令的简单用法
- SQLite.swift简单实用笔记
- fast-json的简单实用笔记
- SCWCD笔记转载 。(都是看似简单 其实实用的基础)
- 推荐一款简单实用的漏洞测试工具:Paros《收藏》
- OKHttp使用简单介绍,实用教程
- Python学习笔记3-文件的简单操作
- c#/asp.net/html/css/js/jquery 实用小方法 整理笔记
- 整理一下当年的学习笔记之:初步学习freemarker ,先做一个简单的HelloWord程序!
- 一个简单实用的内存池之一(c实现)
- C语言、Java学习笔记(三)---几种简单的排序算法