摘要:
下图中,a指针是分配在栈内存上的,和int a = 5;是一样的区域。a指针指向的内容是分配在堆上的,a[0] ~ a[4]。C++中分配内存,3种方式:(1)从静态存储区域分配。内存在程序编译(注意,是编译的时候!int a = 5;都不是编译的时候,都算是运行的时候)的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦称动态内存分配。程序在运行的时
阅读全文
posted @ 2011-08-02 17:30
kkmm
阅读(176)
推荐(0)
编辑
摘要:
用在宏里面。当宏里面有if时,可以起到封闭代码作用,防止与外面的 if 混淆。比如定义宏,#define FREE1(p) if (p) free (p)而在代码部分这样调用宏:if (expression)FREE1(p)elseprintf(“expression was false.\n”) ;展开后,else会和宏中的if配对了,这就错了。但是宏写成如下的形式就永远不会错了#define FREE4(P)do { if (p) free(p)}; while (0)
阅读全文
posted @ 2011-08-02 12:56
kkmm
阅读(321)
推荐(0)
编辑
摘要:
http://www.cnblogs.com/flying_bat/archive/2008/01/18/1044693.html在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放
阅读全文
posted @ 2011-08-02 12:19
kkmm
阅读(246)
推荐(0)
编辑
摘要:
typedef的用法*****以下是参考部分*****此部分参考自:http://blog.sina.com.cn/u/572f7666010008dm用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb;//这多数不符合我们的意图,它只声明了一个指向字符变量的指针,//和一个字符变量;以下则可行:typedef char* PCHAR;PCHAR pa, pb;用途二:用在旧的C代码中,帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为:struct结构名对象名,如:struct tagPO
阅读全文
posted @ 2011-08-02 11:11
kkmm
阅读(183)
推荐(0)
编辑