C程序中,内存分布的细节究竟可以有多么复杂?
- 内容介绍
- 相关推荐
本文共计1270个文字,预计阅读时间需要6分钟。
C++程序内存分布概述,复习C++相关知识,整理如下:
C++的存储区主要包括以下几类:
1. 栈区(Stack):由编译器自动分配释放,存放函数的参数值、局部变量等。栈内存大小通常有限,通常情况下是几MB。
2.堆区(Heap):通过new、delete进行分配释放,若new分配了内存,则程序员有责任释放它。堆内存大小受限于虚拟内存,但一般远大于栈内存。
3.全局区(Global/Static):存放全局变量和静态变量。全局变量分配在全局区,生命周期为整个程序运行期间。
4.常量区(Constant):存放常量字符串字面量、全局常量等。常量区内的数据在程序运行期间不能被修改。
5.编译器代码区(Code Segment):存放编译后的代码。这部分内存由操作系统负责分配释放。
C++之程序的内存分布
最近在复习C++相关的知识,整理一下。
C++的存储区主要有以下几类:
栈区:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆区:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉, 那么在程序结束后,操作系统会自动回收。只new不delete会造成内存泄漏。
全局/静态存储区:全局变量和静态变量(static修饰的变量)是存储在同一块内存区域的。
本文共计1270个文字,预计阅读时间需要6分钟。
C++程序内存分布概述,复习C++相关知识,整理如下:
C++的存储区主要包括以下几类:
1. 栈区(Stack):由编译器自动分配释放,存放函数的参数值、局部变量等。栈内存大小通常有限,通常情况下是几MB。
2.堆区(Heap):通过new、delete进行分配释放,若new分配了内存,则程序员有责任释放它。堆内存大小受限于虚拟内存,但一般远大于栈内存。
3.全局区(Global/Static):存放全局变量和静态变量。全局变量分配在全局区,生命周期为整个程序运行期间。
4.常量区(Constant):存放常量字符串字面量、全局常量等。常量区内的数据在程序运行期间不能被修改。
5.编译器代码区(Code Segment):存放编译后的代码。这部分内存由操作系统负责分配释放。
C++之程序的内存分布
最近在复习C++相关的知识,整理一下。
C++的存储区主要有以下几类:
栈区:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆区:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉, 那么在程序结束后,操作系统会自动回收。只new不delete会造成内存泄漏。
全局/静态存储区:全局变量和静态变量(static修饰的变量)是存储在同一块内存区域的。

