内存四区模型

  • 内存四区分为:栈区、堆区、全局区、代码区
  • c/c++可以在临时区分配内存,用完后自动被编译器清理

函数1调用函数2,函数1称为主调函数函数2称为被调用函数

规则 详情
规则1:Main(主调函数)分配的内存(堆区,栈区、全局区)都可以在被调用函数里使用
规则2:在被调用函数里面分配的内存 1、如果在被调用函数里面的临时区(栈)分配内存,主调用函数是不能使用的。

如下列代码,在主调用函数是不能使用的,因其试图将临时分配的buf返回:

char * getstring3()
{ 
        char  buf[30]; 
        strcpy(buf, "abcde");
        return  buf;
}
  • 栈向下生长,堆向上生长
即:当给变量分配内存时,栈分配的地址越来越小,而堆分配的地址则越来越大

同时,heap,stack的生长方向与内存存放方向是两个不同的概念

一个简单的例子是,int a[10], 则,a[2]的内存地址肯定是大于a[0]的内存地址的

你可能感兴趣的:(内存四区模型)