随笔分类 -  C/C++

摘要:为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏。预定义宏的名称都是以“__”(两条下划线)开头和结尾的,如果宏名是由两个单词组成,那么中间以“_”(一条下划线)进行连接。并且,宏名称一般都由大写字符组成。在日常项目编程中,预定义宏尤其对多目标平台代码的编写通常具有重大意义 阅读全文
posted @ 2021-11-29 17:30 Zupernova 阅读(275) 评论(0) 推荐(0)
摘要:#define do{...}while(0)这种奇怪形式的宏定义经常在实际工程中应用,它的意义如下: 1. 增加代码的适应性 下面的宏定义没有使用do{...}while(0) #define FOO(x) foo(x); bar(x); 这样宏定义,单独调用不会出现问题,例如: FOO(100) 阅读全文
posted @ 2021-11-29 11:19 Zupernova 阅读(226) 评论(0) 推荐(0)
摘要:基本选项 一般来讲,C/C++从源代码到可执行程序之间要经历四个步骤: 预处理:展开头文件/宏替换/去掉注释/条件编译 编译:检查语法,生成汇编 汇编:汇编代码转换机器码 链接:链接到一起生成可执行程序 -E:只进行预处理,不编译 执行指令 gcc -E test.c 命令行显示出预处理信息,但不生 阅读全文
posted @ 2021-11-19 17:32 Zupernova 阅读(314) 评论(0) 推荐(0)
摘要:一定要弄懂GetMemory 堆栈 栈中分配局部变量空间,是系统自动分配空间。定义一个 char a;系统会自动在栈上为其开辟空间。由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。 堆区分配程序员申请的内存空间,堆上的数据只要程序员不 阅读全文
posted @ 2021-11-18 20:00 Zupernova 阅读(49) 评论(0) 推荐(0)
摘要:一、内存基本构成 可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创 阅读全文
posted @ 2021-11-18 19:49 Zupernova 阅读(182) 评论(0) 推荐(0)
摘要:1.申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用 阅读全文
posted @ 2021-11-18 19:37 Zupernova 阅读(44) 评论(0) 推荐(0)
摘要:static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 如果这个静态函数出现在类里,那么它是一个静态成员函数; 静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象(非static)数据成员。 其实很好理解,类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内 阅读全文
posted @ 2021-11-18 19:22 Zupernova 阅读(269) 评论(0) 推荐(0)
摘要:#include两种声明区别 引用的头文件不同 #include < > 引用的是编译器的类库路径里面的头文件。 #include“ ”引用的是你程序目录的相对路径中的头文件。 用法不同 #include < > 用来包含标准头文件(例如stdio.h或stdlib.h). #include“ ”用 阅读全文
posted @ 2021-11-18 19:20 Zupernova 阅读(70) 评论(0) 推荐(0)