C/C++程序的内存分配与使用笔记
作者:网络转载 发布时间:[ 2014/8/22 10:46:37 ] 推荐标签:软件开发 C++ .NET
一、C/C++程序的内存分配
一个C/C++程序占用的内存区一般可以分为如下五种:
①全局/静态数据区
②常量数据区
③代码区
④堆
⑤栈
显然代码存放在代码区,而程序的数据则根据数据种类的不同放在不同的存储区中,在C/C++中,数据主要有几种不同的分类:常量和变量、全局数据和局部数据,静态数据与非静态数据,以及程序运行中产生和释放的动态数据。
其中
①全局/静态数据区中存储全局变量及静态变量(包括全局静态变量和局部静态变量);
②常量数据区中存储程序中的各种常量;
③栈中存储自动变量后者局部变量,以及传递的函数参数等
④堆是用户控制的存储区,存储动态产生的数据(new或者malloc)。
下面通过一个简单的实例来具体看看:
#include
#include
int g_nGlobal = 100;
int main()
{
char *pLocalString1 = "LocalString1";
const char *pLocalString2 = "LocalString2";
static int nLocalStatic = 0;
int nLocal = 0;
const int nLocalConst = 100;
int *pIntNew = new int[5];
char *pMalloc = (char *)malloc(1);
printf("global variable: 0x%x/n", &g_nGlobal);
printf("static variable: 0x%x/n", &nLocalStatic);
printf("local printer1: 0x%x/n", pLocalString1);
printf("local const printer: 0x%x/n/n", pLocalString2);
printf("new: 0x%x/n", pIntNew);
printf("malloc: 0x%x/n/n", pMalloc);
printf("local printer(pIntNew): 0x%x/n", &pIntNew);
printf("local printer(pLocalString1): 0x%x/n", &pLocalString1);
printf("local printer(pLocalString2): 0x%x/n", &pLocalString2);
printf("local variable(nLocal): 0x%x/n", &nLocal);
printf("local printer(pMalloc): 0x%x/n", &pMalloc);
printf("local const(nLocalConst): 0x%x/n", &nLocalConst);
delete []pIntNew;
free(pMalloc);
return 0;
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11