内存泄漏是c++程序常见的问题了,特别是服务类程序,当系统模块过多或者逻辑复杂后,很难通过代码看出内存泄漏。 valgrind是一个开源的,检测c++程序内存泄漏有效工具,编译时加上-g选项可以定位到代码行,同时还检查‘野指针’,检查malloc与free是否匹配等功能。 参考: 1. Linux下 ...
分类:
其他好文 时间:
2018-10-07 10:33:58
阅读次数:
165
空悬指针是这样一种指针:指针正常初始化,曾指向过一个正常的对象,但是对象销毁了,该指针未置空,就成了悬空指针。 野指针是这样一种指针:未初始化的指针,其指针内容为一个垃圾数。 (一般我们定义一个指针时会初始化为NULL或者直接指向所要指向的变量地址,但是如果我们没有指向NULL或者变量地址就对指针进 ...
分类:
其他好文 时间:
2018-09-30 18:20:47
阅读次数:
566
1.在C语言的很多应用中常常需要使用malloc函数和free函数,为了防止内存泄漏和野指针的出现,需要在堆内存使用完毕后对指针指向的空间进行释放并对指针进行置零 char*p = NULL; p = (char*)malloc(10*sizeof(char)); ..... if(p!=NULL) ...
分类:
其他好文 时间:
2018-09-19 12:24:39
阅读次数:
147
野指针: 野指针的由来: 示例程序: 第13行越界之后就相当于操作野指针了。第8行将随意一个地址转换为指针,也相当于野指针。 运行结果如下: 基本原则: 示例: 第15行返回局部字符数组,是不正确的。结构体s中的name没有初始化,s.name和p都是野指针。 34-36行的内存拷贝也会产生越界。和 ...
分类:
其他好文 时间:
2018-08-29 22:49:12
阅读次数:
272
C++语言学习(十八)——异常处理一、C语言异常处理异常是指程序在运行过程中产生可预料的执行分支。如除0操作,数组访问越界、要打开的文件不存在。Bug是指程序中的错误,是不被预期的运行方式。如野指针、堆空间使用结束未释放。C语言中处理异常的方式一般是使用if....else...分支语句。doubledivide(doublea,doubleb){constdoubledelta=0.000000
分类:
编程语言 时间:
2018-08-26 20:07:23
阅读次数:
209
空悬指针 简单地说,空悬指针是对象的指针的生存周期比对象更长所导致的,也就是说,对象销毁、删除了,不存在了,指针仍然存在,这时这个指针就成了空悬指针。 当对象被析构、删除时,如果指向它的指针没有被同时修改,那么指针仍然会指向那块内存(但是那块内存已经没有东西了)。系统此时可能会重新分配这块已经fre ...
分类:
其他好文 时间:
2018-08-19 20:08:25
阅读次数:
947
概念:野指针指向了一块随机内存空间,不受程序控制。如指针指向已经被删除的对象或者指向一块没有访问权限的内存空间,之后如果对其再解引用的话,就会出现问题。 野指针产生的原因: 1、指针定义时未被初始化:指针在被定义的时候,如果程序不对其进行初始化的话,它会指向随机区域,因为任何指针变量(除了stati ...
分类:
其他好文 时间:
2018-08-11 22:01:46
阅读次数:
139
五、野指针 六、空指针(存在意义) 七、测定指针大小 八、多级指针 (eg:1) (eg:2) 九、[ ]不是数组专有的 十、万能指针 注意:a占4字节,p=&a,p只保存了a的首地址(第一个字节的地址) 十一、指针步长 十二、const修饰指针 都不能改 ...
分类:
编程语言 时间:
2018-07-26 15:03:59
阅读次数:
189
在C语言项目中,经常会遇到需要程序员手动分配内存的地方。这样做能够节省大量的内存空间,也让程序更加灵活。只要你有一定的基础,那么肯定用过 malloc 或者 ralloc和free的组合。这个组合使用起来有一个需要注意的地方,不知道你有没有发现。 野指针是什么? 根据百度百科的说法,野指针是指 指向 ...
分类:
其他好文 时间:
2018-07-25 17:43:20
阅读次数:
163
是那样的爱学习 那一刻从入门到入土 丑拒 前言 C 语言程序中的内存错误非常有害:它们很常见,并且可能导致严重的后果,最难受的极大多数时候内存问题看不见,也摸不着。编译正确运行出错,让新手从入门到入土,让老手也头痛不已,花费很多时间进行查找和修复。很多时候最严重的安全问题都是由简单的内存错误造成的, ...
分类:
编程语言 时间:
2018-07-07 01:07:48
阅读次数:
224