易截截图软件、单文件、免安装、纯绿色、仅160KB

关于delete C/C++ 指针

栈:函数调用的时候,在栈中保存局部变量和函数参数等。当函数返回时,自动清除栈。
自由存储区:也称为堆(heap),可以看作大量的内存段。通过 new 操作符分配的内存在堆中。程序结束之前不自动清除自由存储区。需要由程序来负责释放(delete)。
1.
对指向栈上内存的指针调用delete会导致程序Crash。
2. 
new 进行自由存储区中内存分配。
如果 new 不能在自由存储区中创建内存,则会返回 NULL指针。每次分配新内存时一定要检查指针是否为 null.
delete 操作实际上是恢复指针所指的内存,使之可以再用,而不至于造成内存泄漏(memory leak).
而指针仍然是指针,必要时还可以重新赋值。
如果对已经释放过的指针调用 delete 操作,会导致程序崩溃。当删除指针时,给指针赋值 NULL(0), 对空指针调用 delete 是安全的。
内存泄漏:一种情况是程序在未释放它指向的内存之前就给指针重新赋值。
当程序对自由存储区中的对象指针调用 delete 时,在释放内存之前会自动调用对象的析构函数。这个策略给类提供了清理的机会。
3.
对于Symbian应用程序,如果先delete了一个指针指向的内存,但没有把这个指针赋值为NULL,然后在某处发生了Leave, 清除栈弹出指针并再次delete这段内存,这就造成了多次delete一段内存,当第二次delete这段内存时,应用程序会Crash(程序终止),Crash 原因可能是:这段内存已经分配作为其它用处,删除这段还需要用的内存空间,从而导致Crash。


相关文档:

wince背光调节 VC代码c文件

// backlightDlg.cpp : implementation file
//
#include "stdafx.h"
#include "backlight.h"
#include "backlightDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CbacklightDlg dialog
CbacklightDlg::CbacklightDlg(CWnd* pParent /*=NULL*/)
 : CDialog(CbacklightDlg::IDD, pParent)
{
  ......

c标准库函数

本文包括大部分C标准库函数,但没有列出一些用途有限的函数以及某些可以简单的从其他函数合成的函数,也没有包含多字节和本地化函数。
标准库中的各个函数、类型以及宏分别在以下标准头文件中说明:
<assert.h> <float.h> <math.h> <stdarg.h> <stdlib.h>
<ctype.h> <limits.h& ......

Visual Studio 2008 下生成C/C++ 汇编代码

在项目属性页 --> 配置属性 --> C/C++ --> 输出文件里面,将汇编输出的下拉列表从无列表选择为你需要汇编输出的内容,比如“仅列出程序集(/FA)”,如图1-1,图1-2:
 
图1-1
 
图1-2
------------------------------------------------------------------------------------------------ ......

C和C++编程和学习文档

 C和C++编程和学习文档
1  :指针变量名称以p为首字符,这是程序员通常在定义指针时的一个习惯
2  :har * p;    (int *)p 把p强制转换为int型                        ......

c学习第一天

n 用标识符代表一个常量,称为符号常量。 n 符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。 n 使用符号常量的好处是: Ø 含义清楚; Ø 能做到“一改全改”。 --话说:不知道c里面有没有全局变量的东东,有的话,这两个的实际用处有啥子区别呢?看看再说 数据结构+算法=程序 终于知道这 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号