内存四区

简介: 内存四区

1.内存分区模型



2.程序运行前:


//放在主函数外面就是全局变量
//全局变量
int g_a = 10;
int g_b = 10;
//全局常量
//const表示常量
const int c_g_a = 10;
const int c_g_b = 10;
int main() {
//局部变量
int a = 10;
int b = 10;
//打印地址
cout << "局部变量a地址为: " << (int)&a << endl;
cout << "局部变量b地址为: " << (int)&b << endl;
cout << "全局变量g_a地址为: " << (int)&g_a << endl;
cout << "全局变量g_b地址为: " << (int)&g_b << endl;
//静态变量
    //在数据前面加上static就转化为了静态变量
static int s_a = 10;
static int s_b = 10;
cout << "静态变量s_a地址为: " << (int)&s_a << endl;
cout << "静态变量s_b地址为: " << (int)&s_b << endl;
cout << "字符串常量地址为: " << (int)&"hello world" << endl;
cout << "字符串常量地址为: " << (int)&"hello world1" << endl;
cout << "全局常量c_g_a地址为: " << (int)&c_g_a << endl;
cout << "全局常量c_g_b地址为: " << (int)&c_g_b << endl;
const int c_l_a = 10;
const int c_l_b = 10;
cout << "局部常量c_l_a地址为: " << (int)&c_l_a << endl;
cout << "局部常量c_l_b地址为: " << (int)&c_l_b << endl;
system("pause");
return 0;
}



3.程序运行后

#include<iostream>
using namespace std;
int* func() {
 int a = 10;
 return &a;
}
int main() {
 int* p = func();
 cout << *p << endl;
 return 0;
}



4.new操作符




#include<iostream>
using namespace std;
int* func() {
  int* a = new int(10);
  return a;
}
int main() {
  int* p = func();
  cout << *p << endl;
  cout << *p << endl;
  delete  p;
  system("pause");
  return 0;



相关文章
几组汇编指令的比较
几组汇编指令的比较
|
7月前
|
存储 C语言 C++
C++栈区、堆区、全局静态区、代码区的介绍
C++栈区、堆区、全局静态区、代码区的介绍
|
7月前
|
存储 程序员 编译器
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
310 0
|
存储 程序员 编译器
变量的本质分析、内存四区、函数调用模型
变量的本质分析、内存四区、函数调用模型
54 0
|
编译器
学C的第十一天【查看汇编代码一步步了解 函数栈帧(栈区局部变量)的创建和销毁 讲解】-1
函数栈帧的创建和销毁 越高级的编译器,越不容易学习和观察该过程 同时在不同的编译器下,函数调用过程中栈帧的创建是略有差异的,具体细节取决于编译器的实现
|
编译器 C语言
函数的栈帧与销毁(栈帧可不是战争哦)
函数的栈帧与销毁(栈帧可不是战争哦)
55 0
|
存储 编译器 程序员
C语言代码函数栈帧的创建与销毁(修炼内功)
目录 在前期的学习中我们可能有很多困惑 例如:局部变量是怎么创建的 为什么局部变量的值是随机值 函数是怎么样传参的 传参的顺序是什么 形参和实参的关系是什么 函数调用是怎么做的 函数掉调用结束后怎么返回的 这篇博客我们来修炼自己的内功,掌握好这篇博客的大部分知识就已经很不错了 我们用到VS2013这个编译器,目的是为了看到更详细的函数封装内容 提示不要使用太过高级的编译器,因为越高级的编译器越不容易观察。同时这里需要注意的是在不同的编译器下,函数调用过程中栈帧的创建是略有差异的,不是完全相同的,具体细节取决于编译器
|
存储 程序员 Linux
再谈应用程序分段:代码段、数据段、bss以及堆和栈
再谈应用程序分段:代码段、数据段、bss以及堆和栈
777 0