内存四区模型

  • 内存四区分为:栈区、堆区、全局区、代码区
  • 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]的内存地址的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容