堆和栈是两个不同的数据区。栈,用户可以自己设定栈底,在用特定的指令从栈顶装入数据或从栈顶弹出数据。而堆呢??????C中跟堆功能最像的就是动态内存的分配,本质就是地址的管理。堆就是一段内存空间,可以“动态”的分配给局部变量,局部变量使用完后,再把地址给堆重新分配给其他的动态变量!!!!!!
不知道这样理解对不对?
那么关于堆的地址的管理,当然不是程序员来管理的,程序员也不用自己申请堆地址,这些都是编译器帮你完成的,编译器在编译完一个局部变量时,会给它一个地址,这个地址就在堆中,等局部变量使用完毕后,再把这个地址给下个局部变量,这样就完成了堆地址的管理。。。。。。。。
不知道上面的理解对不对,还希望各位能说说自己对堆和栈的理解!谢谢!!!!!! |