C/C++中const与define应用上该怎么取舍
来源:互联网 发布:java技术 编辑:程序博客网 时间:2024/06/06 15:09
1.define和const机制
define是在预编译的时候展开替换的,const是编译运行阶段使用。define没有类型,不做类型检查处理。只是替换。const常量有具体的类型,在编译的时候会进行类型检查。define宏定义仅仅是替换宏定义不分配内存,变量定义分配内存,const会在内存中分配。
2.内存管理
#define PI 3.14159 //常量宏const doulbe Pi=3.14159; //此时并未将Pi放入ROM中double i=Pi; //此时为Pi分配内存,以后不再分配!double I=PI; //编译期间进行宏替换,分配内存double j=Pi; //没有内存分配double J=PI; //再进行宏替换,又一次分配内存!
const更节省空间,避免不必要的内存分配。选择const比define更省空间
@3.堆栈@
从汇编层面上讲,栈是机器系统提供给我们的数据结构,堆是我们通过C/C++函数去申请开辟的数据结构。
数据结构上来说,栈是个先进后出的线性表,存储方式上又分了顺序栈、链式栈。堆则是二叉树的一种。一般用到的排序都是堆排序。
内存管理上,栈会自动回收,堆需要我们自己管理。
一个由C/C++编译的程序占用的内存分为以下几个部分
栈区(stack)
由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
堆区(heap)
一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
全局区(静态区)(static)
全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束后有系统释放
文字常量区
常量字符串就是放在这里的。 程序结束后由系统释放
程序代码区
存放函数体的二进制代码。
阅读全文
1 0
- C/C++中const与define应用上该怎么取舍
- C语言中const与define的区别
- C/C++中define定义的常量与const常量
- C/C++中的const与define
- C语言 #define 与 const的区别
- C++,const与define的区别
- C++与C中const的比较以及const和define的比较
- C/C++: const常量与define宏定义的区别
- C语言中const位置与应用辨析
- C/C++中怎么使用Const
- 【C++】用const修饰变量与define的区别
- C/C++定义常量#define与const比较
- C/C++定义常量#define与const比较
- C语言 关于#define 与const 一点心得
- 【每日一C之十】const与define区别
- 浅尝C++——const与#define定义符号常量
- 解析php中const与define的应用区别
- C语言中-const,volatile-struct,union-enum,typedef,define
- 【网络】Select服务器的实现
- 用户名(手机号)和密码的后台校验
- Sybase、DB2数据导入导出
- uGUI Text富文本的顶点数优化
- 把对象先存起来,后面再用
- C/C++中const与define应用上该怎么取舍
- 数据库中的游标
- 微信小程序 收藏成功提示(九)
- 递归
- 机器学习:误差分析
- Building Graphs
- 妈妈回忆录1
- Mysql实现全局唯一ID
- fliter过滤器过滤未登录用户