美文网首页
c++ 内存四区

c++ 内存四区

作者: 我与android的爱恨纠葛 | 来源:发表于2020-03-13 13:38 被阅读0次

代码区:存放函数体的二进制代码,由操作系统进行管理
全局区:存放全局变量和静态变量,以及常量(字符串常量以及其他常量)
栈区:由编译器自动分配释放,存放函数的参数值,局部变量等
堆区:由程序员分配释放,若程序员没有释放,程序结束时由系统回收

意义:赋予不同的生命周期

程序编译后运行前,分为代码区和全局区
代码区特点是:共享性(对于频繁被执行的程序,在内存中只有一份代码即可),只读性(防止程序被篡改)
全局区在程序执行完由操作系统释放
程序运行之后有栈区和堆区

栈区:因为局部变量在函数运行完之后就会被释放掉,所以不要打印局部变量的地址值
如:

#include<iostream>
using namespace std;

int *func() {
    int a = 10;
    return &a;
}

int  main() {
    int *p = func();
    cout << "*p" << *p << endl;
    cout << "*p" << *p << endl;
    system("pause");
}

运行结果


微信图片_20200313115631.png

堆区:
可以利用new关键字,将数据开辟到堆区。最后由程序员释放
例:int *p=new int(10);

所以上边的例子,可以这样写

#include<iostream>
using namespace std;

int *func() {
    int *a = new int(10);
    return a;
}

int  main() {
    int *p = func();
    cout << "*p" << *p << endl;
    cout << "*p" << *p << endl;
    system("pause");
}

输出结果:


微信图片_20200313115631.png

堆区内存释放:
delete p;

相关文章

  • c++ 内存四区

    代码区:存放函数体的二进制代码,由操作系统进行管理全局区:存放全局变量和静态变量,以及常量(字符串常量以及其他常量...

  • 内存四区模型

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

  • C提高

    1.选择排序 2.内存四区 3. typedef 首先://注意在C和C++里不同在C中定义一个结构体类型要用t...

  • 内存四区

    stack(栈区):存放局部变量、函数参数、返回数据和返回地址,系统自动分配释放。栈顶从高地址向低地址的方向生长,...

  • c++内存管理

    c++内存管理长文 c++内存管理

  • 内存管理

    内容包括: C++内存管理 Java内存管理 C++内存管理 内存分配方式 在C++中,内存分成5个区,分别是栈、...

  • C++核心编程——内存四区全局区

    全局区: 全局变量和静态变量存放在此全局区还包含了常量区,字符串常量和其他常量也存放在此该区域的数据在程序结束后由...

  • 内存四区模型

    操作系统把C代码分成四个区: (1)堆区(heap):一般由程序员分配释放(动态内存申请与释放),若程序员不释放,...

  • 内存四区模型

    全局区 全局区分为:全局变量,静态变量,文字常量区 栈区 堆区 静态局部变量 栈的生长方向

  • C++运算符重载实现(加号、左移、递增、赋值、关系运算符、函数调

    先来复习一下C++的内存分区问题~ C++内存分区 C++程序的内存分区可划分为四大内存分区:堆、栈、全局/静态存...

网友评论

      本文标题:c++ 内存四区

      本文链接:https://www.haomeiwen.com/subject/isqcfhtx.html