写个范例验证一下不同的变量类型会存放在那里的问题。
#include <stdio.h>
#include <time.h>
#include <iostream>
using namespace std;
int g1; //未初始化的全局变量 B
int g2 = 0; //初始化为0全局变量 B
int g3 = 12; //初始化为12全局变量 D
static int g4; //b
static int g5=0; //b
static int g6 = 10; //d
void mygfunc()
{
int i = 10;
int j;
static int x;
static int y = 10;
return;
}
//定义一个类
class MYACLS
{
public:
int m_i;
static int m_si;
virtual void fun()
{
}
};
int MYACLS::m_si = 0;
int main()
{
int *pp;
int oo = 10;
int *qq = &oo;
MYACLS obj;
printf("obj = %p\n", &obj);
return 1;
}
关于nm命令可以参考:https://www.cnblogs.com/zuofaqi/p/12026482.html
需要注意的是,数据段是包括了BSS段的,而栈的内存是向下增长,堆是向上增长。