内存四区模型

  • 内存四区分为:栈区、堆区、全局区、代码区
  • c/c++可以在临时区分配内存,用完后自动被编译器清理
【内存四区模型】函数1调用函数2,函数1称为主调函数函数2称为被调用函数
规则 详情
规则1:Main(主调函数)分配的内存(堆区,栈区、全局区)都可以在被调用函数里使用
规则2:在被调用函数里面分配的内存 1、如果在被调用函数里面的临时区(栈)分配内存,主调用函数是不能使用的。
如下列代码,在主调用函数是不能使用的,因其试图将临时分配的buf返回:
char * getstring3() { charbuf[30]; strcpy(buf, "abcde"); returnbuf; }

  • 栈向下生长,堆向上生长
即:当给变量分配内存时,栈分配的地址越来越小,而堆分配的地址则越来越大

同时,heap,stack的生长方向与内存存放方向是两个不同的概念
一个简单的例子是,int a[10], 则,a[2]的内存地址肯定是大于a[0]的内存地址的

    推荐阅读