C++栈区、堆区、全局静态区、代码区的介绍

简介: C++栈区、堆区、全局静态区、代码区的介绍

示例代码

#include <iostream>
// 全局变量 存储在静态区
int IntNum = 0;
// 静态全局变量 存储在静态区
static int StaInitNum = 0;
int main(int argc, char **argv)
{
    // 静态局部变量 存储在静态区
    static int MainStaInitNum = 0;
    // 局部变量 存储在栈区
    char c_str[] = "hello world";
    // 指针变量 存储在栈区
    char *p = c_str;
    // 指针变量 通过new申请的动态内存存储在堆区
    char *p_str = new char[10];
    // 执政变量 存储在栈区 ”hello world“存储在常量区
    char *_str = "hello world";
    // 释放申请的动态内存
    delete[] p_str;
    return 0;
}

代码区:存放程序代码,在计算机中以二进制方式保存。

栈区:存放函数内的局部变量,形参和函数返回值,栈区的数据由操作系统分配也是由操作系统自动释放。

堆:使用malloc和new申请的内存块,如果我们不手动释放,在程序结束后系统会自动回收,一般在编写程序的过程中需要手动释放申请的内存(free和delete)否则可能会造成内存泄漏问题。

全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在C语言中还分:在未初始化的全局变量和静态变量、已初始化的全局变量和静态变量。但是在C++中没有这个区分,他们共同占用同一块内存区。

常量存储区:存放常量,不允许修改。

相关文章
|
2月前
|
算法 C++
|
2月前
|
算法 C++
【算法单调栈】 矩形牛棚(C/C++)
【算法单调栈】 矩形牛棚(C/C++)
|
7月前
|
存储 设计模式 C语言
C++中的栈和队列
C++中的栈和队列
50 0
|
6月前
|
存储 算法 程序员
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
64 4
|
6月前
|
程序员 编译器 C++
C++内存分区模型(代码区、全局区、栈区、堆区)
C++内存分区模型(代码区、全局区、栈区、堆区)
|
7月前
|
算法 C++
c++算法学习笔记 (15) 单调栈与单调队列
c++算法学习笔记 (15) 单调栈与单调队列
|
7月前
|
算法 C++
c++算法学习笔记 (14) 栈与队列
c++算法学习笔记 (14) 栈与队列
|
7月前
|
设计模式 算法 编译器
【C++入门到精通】特殊类的设计 |只能在堆 ( 栈 ) 上创建对象的类 |禁止拷贝和继承的类 [ C++入门 ]
【C++入门到精通】特殊类的设计 |只能在堆 ( 栈 ) 上创建对象的类 |禁止拷贝和继承的类 [ C++入门 ]
71 0
|
7月前
|
设计模式 C语言 C++
【C++进阶(六)】STL大法--栈和队列深度剖析&优先级队列&适配器原理
【C++进阶(六)】STL大法--栈和队列深度剖析&优先级队列&适配器原理
|
7月前
|
编译器 C++
C++编程之美:探索初始化之源、静态之恒、友情之桥与匿名之韵
C++编程之美:探索初始化之源、静态之恒、友情之桥与匿名之韵
57 0