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++中没有这个区分,他们共同占用同一块内存区。

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

相关文章
|
27天前
|
设计模式 算法 C++
【C++初阶】12. Stack(栈)和Queue(队列)
【C++初阶】12. Stack(栈)和Queue(队列)
42 3
|
2月前
|
C++
使用C++代码实现栈
使用C++代码实现栈
|
2月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
34 6
|
11天前
|
设计模式 C语言 C++
【C++进阶(六)】STL大法--栈和队列深度剖析&优先级队列&适配器原理
【C++进阶(六)】STL大法--栈和队列深度剖析&优先级队列&适配器原理
|
27天前
|
存储 C++
C++ 栈和堆的作用机制,及特点区别
在介绍C++中的十分重要的动态内存管理机制之前,有必要先单独来介绍一下C++中的两个概念,分别是栈和堆。
19 2
|
1月前
|
C++
C++异常之栈解旋
C++异常之栈解旋
|
2月前
|
存储 设计模式 算法
【C/C++ 数据结构 线性表】深入理解与实现栈:从基础到应用的全面探索
【C/C++ 数据结构 线性表】深入理解与实现栈:从基础到应用的全面探索
53 0
|
2月前
|
算法 数据安全/隐私保护 C++
【C/C++ 编程题 03】用两个栈实现一个队列的功能
【C/C++ 编程题 03】用两个栈实现一个队列的功能
16 0
|
2月前
|
算法 编译器 C语言
【C/C++ 编程题 02】用两个栈实现一个队列的功能
【C/C++ 编程题 02】用两个栈实现一个队列的功能
20 0
|
2月前
|
存储 程序员 编译器
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
31 0