内存四区

简介: 内存四区

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;



相关文章
|
11月前
|
编译器 C语言 C++
栈区开辟空间的底层逻辑:函数栈帧的创建和销毁
栈区开辟空间的底层逻辑:函数栈帧的创建和销毁
97 0
|
5月前
|
程序员 编译器 C++
C++内存分区模型(代码区、全局区、栈区、堆区)
C++内存分区模型(代码区、全局区、栈区、堆区)
|
5月前
|
程序员 C语言 C++
【C语言】:柔性数组和C/C++中程序内存区域划分
【C语言】:柔性数组和C/C++中程序内存区域划分
40 0
|
6月前
|
程序员 编译器 C++
内存分区模型(代码区、全局区、栈区、堆区)
内存分区模型(代码区、全局区、栈区、堆区)
|
6月前
|
存储 C语言 C++
C++栈区、堆区、全局静态区、代码区的介绍
C++栈区、堆区、全局静态区、代码区的介绍
|
6月前
|
存储 程序员 编译器
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
251 0
|
11月前
|
存储 程序员 编译器
C++内存分布
C++内存分布
46 0
|
存储 Linux C语言
【C/C++内存分布】
【C/C++内存分布】
65 0
|
编译器
学C的第十一天【查看汇编代码一步步了解 函数栈帧(栈区局部变量)的创建和销毁 讲解】-1
函数栈帧的创建和销毁 越高级的编译器,越不容易学习和观察该过程 同时在不同的编译器下,函数调用过程中栈帧的创建是略有差异的,具体细节取决于编译器的实现