C/C++
sadguy
菜鸟级程序员
展开
-
堆栈的详解(二):栈的基本知识
二、栈栈(Stack)是一块内存区,对该块内存区中的数据必须按后进先出(LIFO)原则进行存取。栈的一端是固定的,称为栈底(bottom),栈的另一端是浮动的,称为栈顶(top)。在x86中,当前栈顶位置由sp寄存器来指示。对栈的存取只能在栈顶进行。将一个数存入到栈顶的动作称为压栈操作(push),从栈顶取出一个操作数的操作叫做弹栈(pop)。原创 2008-10-01 20:04:00 · 1035 阅读 · 0 评论 -
堆栈的详解(三):堆和栈比较
三、堆和栈比较1、 申请方式栈:由系统自动分配。例如,在函数中申明一个局部变量 int a,系统将自动在栈上为变量a开辟空间。堆:有程序员自己申请,并指明大小,在c中用malloc函数,在c++中用new运算符。例如 char* p1 = (char*)malloc(10*sizeof(char)); char* p2=new char[10]; 但注意哦,变量p1,p原创 2008-10-03 14:01:00 · 562 阅读 · 0 评论 -
堆栈的详解(一):程序的内存映像
一、程序的内存映像一个由C/C++编译的程序的内存分布分为以下几个部分:1、 栈(stack):也是我们所说的堆栈,是由编译器自动分配释放,用来存放函数参数值,函数的返回地址,非静态局部变量的值等。其操作方式类似于数据结构中的栈(后进先出LIFO)。2、 堆(Heep):一般由程序员分配释放,若程序员不释放,程序结束可能由OS回收。3、 全局区(静态区):全局变量和静态变量存原创 2008-10-01 18:43:00 · 882 阅读 · 0 评论