正如谭先生所说,C是一种结构化语言:它的重点是算法和数据结构。C程序的设计首先考虑的是如何通过计算输入(或环境条件)来获得输出(或实现过程(事务)控制)。对于C++,首先考虑的是如何构建对象模型,使该模型能够满足相应的问题域,从而通过获取对象的状态信息来获得输出或实现过程(事务)控制。
内存,栈,堆。
一般应用程序的内存空间如下:
栈:由操作系统自动分配释放,存储函数参数值、局部变量等值,用于维护函数调用的上下文。
堆:一般由程序员分配释放,如果程序员不释放,程序结束时可由操作系统回收,以容纳应用程序动态分配的内存区域。
可执行文件图像:存储可执行文件在内存中的图像,由装载器装载,读取或映射可执行文件的内存。
保留区:保留区不是一个单一的内存区,而是保护内存并禁止访问的内存区的总称。例如,C语言无效指针通常为0(NULL),因此0地址在正常情况下不可能有效访问数据。
栈
栈保存了函数调用所需的维护信息,通常称为堆栈帧(StackFrame)或活动记录(ActivateRecord),一般包括以下几个方面:
函数的返回地址和参数。
临时变量:包括函数的非静态局部变量和编译器自动生成的其他临时变量。
保存上下文:包括函数调用前后需要保持不变的寄存器。
堆
堆分配算法:
空闲链表(Freelist)
位图(Bitmap)
对象池
段错误(segmentfault)或非法操作,内存地址不能read/write
非法指针解引引引起的典型错误。当指针指向不允许读写的内存地址,而程序试图用指针读写地址时,就会出现这个错误。
普遍原因:
将指针初始化为NULL,然后开始使用指针而不给它一个合理的值。
没有初始化栈中的指针,指针的值一般是随机数,然后直接开始使用指针。
以上就是小编为大家整理发布的“C++基础语法”一文,更多相关内容尽在开课吧C++教程频道。
