内存管理一直是令C++程序员最头疼的工作,C++继承了C那高效而又灵活的指针,使用起来稍微不小心就会导致内存泄露、野指针、越界访问等访问。虽然C++标准提供了只能指针std::auto_ptr,但是并没有解决所有问题。boost的smart_ptr库是对C++98标准的绝佳补充。它提供了六种智能.....
分类:
其他好文 时间:
2014-08-09 18:41:18
阅读次数:
386
指针保存的是另一个对象的地址(概念真的很重要!!) int a=1; int *ptr = &a;//*定义一个指向int类型的指针ptr, &a取变量a的地址一、指针的初始化几个概念,迷途指针==野指针==悬浮(dangling)指针原则:不能使用未初始化的指针,这就引出指针的初始化问...
分类:
编程语言 时间:
2014-07-31 23:49:10
阅读次数:
294
C++中智能指针可以防止出现野指针、内存泄露等情况,智能指针的类中包含4个函数:构造函数、拷贝构造函数、重载复制操作符、析构函数。构造函数需要对引用计数和指针进行初始化,引用计数初始化为1,拷贝构造函数完成对象之间的拷贝,要注意引用计数的变化和判断两个指针是否指向相同的内存。重载复制操作符,需要判断的情况是左值代表的指针如果引用计数减为0,要释放相应的内存,避免发生内存泄露。析构函数中先判断引用计...
分类:
其他好文 时间:
2014-07-30 01:02:42
阅读次数:
199
C语言堆内存管理上出现的问题,内存泄露,野指针使用,非法释放指针
(1)开辟的内存没有释放,造成内存泄露
(2)野指针被使用或释放
(3)非法释放指针
(1)开辟的内存没有释放,造成内存泄露,下面的例子就可能造成20个字节的泄露,内存泄露不是一个立即会引发故障的错误,但是
它将消耗系统内存。
void function1()
{
char *pa;
pa = (...
分类:
编程语言 时间:
2014-07-10 19:34:03
阅读次数:
185
野指针,也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。
这是野指针的定义,但很多C语言新手对它还是很陌生,下面我就简单举一个例子来看一看。在VC6.0中输入以下代码:
#include
#include
void main()
{
char *p;
//...可能有别的很多操作
if(p != NULL)
{...
分类:
其他好文 时间:
2014-07-06 12:21:18
阅读次数:
318
Author: JW. Zhou Date: 2014/7/2 一、空指针(0/NULL) 返回NULL和返回0是完全等价的,因为NULL和0都表示空指针,换句话说:空指针是什么,就是一个被赋值为0的指针,在没有被具体初始化前,其值为0;NULL 是一个标准规定的宏定义,用来表示空指针常量。#def...
分类:
其他好文 时间:
2014-07-03 13:03:01
阅读次数:
215
main一般没有参数intmain(char*string)导致运行出错char*string="a";(对)char*string=‘a’;(错)chara;(对)char*b=&a;*b=‘c‘;char*b=‘c‘;(错)int*p;*p=7;错给指针指向的数据赋值,这里的p还没有指向,所以不能赋值。这种指针称为“悬浮指针”,俗称“野指针”,是不..
分类:
编程语言 时间:
2014-06-28 06:03:46
阅读次数:
240
别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。用调试器跟踪示例7-5,发现指针p被free以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,p成了“野指针”。如果此时不把p设置为NULL,会让人误以为p是个合法....
分类:
其他好文 时间:
2014-06-26 22:36:44
阅读次数:
287
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。“野指针”的成因主要有两种:(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以...
分类:
其他好文 时间:
2014-06-25 14:30:24
阅读次数:
133
Cocos2d-x游戏开发之lua工程创建,
lua作为一种开源动态解释型语言,可以实现动态游戏更新,避免c++出现的野指针错误。...
分类:
其他好文 时间:
2014-06-14 14:49:26
阅读次数:
275