程序设计中的栈和堆的使用

来源:互联网 发布:斗鱼fifa卡卡淘宝店 编辑:程序博客网 时间:2024/06/09 23:22

栈是为每个函数提供的一个独立的内存工作区;

我的理解是函数中定义的没有使用动态内存分配的变量都是在栈,编译器在编译时必须确定栈的大小;

比如:foo()中的变量int a,b;a,b都在栈上,对函数bar()的操作不会影响到foo函数中的a,b,除非专门去改变它们;

 

堆是一段独立于当前函数和栈的内存区域;

需要动态分配内存的变量操作都在堆上进行;

比如:foo()中的变量int *p = (int *)malloc(10*sizeof(int)),此时p指针本身是存在栈上的,但是p指针所指向的

内存区域就存在堆上,当然不是所有的指针指向的内容都存在堆上,比如:int *p, a =10; p = &a,此时p指针指向

的内存区域还是在栈上;

 

 

原创粉丝点击