/************************************************************************
全局/静态数据区:存储全局变量及静态变量(包括全局静态变量和局部静态变量)
常量数据区:存储程序中常量字符串等代码区
栈:存储自动变量或局部变量,以及传递的函数参数等
堆:用户程序控制的存储区,存储动态产生的数据
************************************************************************
//***VS2005 TEST***/
#include <stdio.h>
#include <stdlib.h>
int nGlobal = 100;
int main()
{
char *pLcocalString1 = "LocalString1"; // 4字节对齐, 13个字节,则为16个字节
const char *pLcocalString2 = "LocalString2"; //
static int nLocalStatic = 100;
int nLocal = 1;
const int nLocalConst = 20;
int *pNew = new int[5]; // 16字节对齐
char *pMalloc = (char*)malloc(1);
printf("global variable: 0x%x\n", &nGlobal); // 0x417000
printf("static variable: 0x%x\n", &nLocalStatic); // 0x417004
printf("local expression 1: 0x%X\n", pLcocalString1); // 0x4158A4 (与下一个相差20个字节。。。)
printf("local expression (const): 0x%X\n", pLcocalString2); // 0x4158B8
printf("\n");
printf("new: 0x%x\n", pNew); // 0x3f5e38 (4*5 = 20字节,16字节对齐,则为32)(这里为5*16...)
printf("malloc:0x%x\n", pMalloc); // 0x3f5e88
printf("\n");
printf("local pointer(pNew): 0x%x\n", &pNew); // 0x12ff30
printf("local pointer(pLocalString2): 0x%x\n", &pLcocalString2); // 0x12ff54
printf("local pointer(pLocalString1): 0x%x\n", &pLcocalString1); // 0x12ff60
printf("local variable(nLocal): 0x%x\n", &nLocal); // 0x12ff48
printf("local variable(pMalloc): 0x%x\n", &pMalloc); // 0x12ff24
printf("local const variable: 0x%x\n", &nLocalConst); // 0x12ff3c
system("pause");
return 0;
}