C语言
一叶扁舟与星辰大海
这个作者很懒,什么都没留下…
展开
-
堆、栈和静态区
<br />堆(heap):由malloc系列函数分配的内存,其生命周期由free决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错。<br /> <br />栈(stack):保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。<br /> <br />静态区:保存自动全局变量和static变量(包括static全局和局部变量)。静态区的内容在整个程序的生命周期内都存在,由编译器在编译的时候分配。转载 2011-03-07 14:52:00 · 686 阅读 · 2 评论 -
volatile的作用
<br />例:<br />#define A (* (volatile unsigned long *) 0x48000000 )<br /><br /> 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制,因为C语言并没有提供真正的“端口”的概念。如果是内存映射,那就方便的多了。<br /> 举个例子,比如像寄存器A(地址假定为0x48000000)写入数据0x01,那么就可以原创 2011-04-26 14:25:00 · 614 阅读 · 1 评论 -
C语言里面的内联函数(inline)与宏定义(#define)探讨
C语言里面的内联函数(inline)与宏定义(#define)探讨 先简明扼要,说下关键:1、内联函数在可读性方面与函数是相同的,而在编译时是将函数直接嵌入调用程序的主体,省去了调用/返回指令,这样在运行时速度更快。2、内联函数可以调试,而宏定义是不可以调试的。转载 2011-08-08 08:55:23 · 883 阅读 · 0 评论