内存四区

简介: 内存四区

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月前
|
Java 程序员
【JVM】强软弱虚引用详细解释
【JVM】强软弱虚引用详细解释
|
6月前
|
编译器
程序的内存模型\栈区
程序的内存模型\栈区
39 4
|
7月前
|
存储
探究汇编中的栈帧和局部变量
探究汇编中的栈帧和局部变量
72 3
|
7月前
|
存储 安全 程序员
C语言内存四区详解
C语言内存四区详解
240 0
|
存储 程序员 编译器
变量的本质分析、内存四区、函数调用模型
变量的本质分析、内存四区、函数调用模型
54 0
|
存储 编译器 程序员
|
编译器
学C的第十一天【查看汇编代码一步步了解 函数栈帧(栈区局部变量)的创建和销毁 讲解】-1
函数栈帧的创建和销毁 越高级的编译器,越不容易学习和观察该过程 同时在不同的编译器下,函数调用过程中栈帧的创建是略有差异的,具体细节取决于编译器的实现
|
编译器 C语言
函数的栈帧与销毁(栈帧可不是战争哦)
函数的栈帧与销毁(栈帧可不是战争哦)
55 0
|
存储 Java C++
JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器
JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器
109 0

热门文章

最新文章