c++基础

1.#include #define等这些以#开头的代码是什么?有什么用?

这些叫编译指令。
我们知道编译分为两大步:
编译:把文本形式的源代码翻译成机器语言,并形成目标文件
链接:把目标文件 操作系统的启动代码和库文件组织起来形成可执行程序
那么,编译又分为:
1.编译预处理
预处理又称为预编译,是做些代码文本替换工作。编译器执行预处理指令(以#开头,例如#include),这个过程会得到不包含#指令的.i文件。这个过程会拷贝#include 包含的文件代码,进行#define 宏定义的替换 , 处理条件编译指令 (#ifndef #ifdef #endif)等。
2.编译优化
通过预编译输出的.i文件中,只有常量:数字、字符串、变量的定义,以及关键字:main、if、else、for、while等。这阶段要做的工作主要是,通过语法分析和词法分析,确定所有指令是否符合规则,之后翻译成汇编代码。
这个过程将.i文件转化位.s文件。
3.汇编
汇编过程就是把汇编语言翻译成目标机器指令的过程,生成目标文件(.obj .o等)。目标文件中存放的也就是与源程序等效的目标的机器语言代码。
目标文件由段组成,通常至少有两个段:
代码段:主要程序的指令。该段是可读和可执行的,一般不可写
数据段:存放程序用到的全局变量或静态数据。可读、可写、可执行。
这个过程将.s文件转化成.o文件。

2.函数返回的指针何时何地进行释放?

你可能感兴趣的:(c++基础)