给定一个链表的头节点  head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

阅读全文 »

全局变量、局部变量、静态全局变量、静态局部变量的区别
C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。

阅读全文 »

申请方式: 栈是系统自动分配,堆是程序员主动申请。申请后系统响应:分配栈空间,如果剩余空间大于申请空间则分配成功,否则分配失败栈溢出;申请堆空间,堆在内存中呈现的方式类似于链表(记录空闲地址空间的链表),在链表上寻找第一个大于申请空间的节点分配给程序,将该节点从链表中删除,大多数系统中该块空间的首地址存放的是本次分配空间的大小,便于释放,将该块空间上的剩余空间再次连接在空闲链表上。
栈在内存中是连续的一块空间(向低地址扩展)最大容量是系统预定好的,堆在内存中的空间(向高地址扩展)是不连续的。
申请效率: 栈是有系统自动分配,申请效率高,但程序员无法控制;堆是由程序员主动申请,效率低,使用起来方便但是容易产生碎片。
存放的内容: 栈中存放的是局部变量,函数的参数;堆中存放的内容由程序员控制。

阅读全文 »

编译过程可以分为以下三个过程:编译(编译预处理、编译、优化),汇编,链接。
其中编译又可以分为编译预处理以及编译优化,就可以划分为四部分。

阅读全文 »