程序的内存模型\全局区

简介: 程序的内存模型\全局区

之前介绍了C语言的一些内容,之后会不定期更新

今天要介绍的C++和C,最开始其实差别不算大,在很多地方用法是一致的,但后来制定的标准将两者进行区分,详情可以查找conference

C++与C最大的不同在于,C偏向于面向过程,而C++偏向于面向对象

这一点在之后提到类(class)这一概念时会体现出来

因为C与C++的相似性,这里就简单提一下,然后直接跳到中间部分进行学习

1.库函数的不同:C中使用的大多带有后缀.h,而C++中大多没有了这个后缀,比如最常用的库<iostream>——注意使用时后面要加"using namespace std"(这不是必须的,但很节约时间,否则就要在命名空间里调用,比如std::cout)

2.输入输出的不同:在下面的代码中很明显能看到cout(其实还有一个cin),其中cout是输出,相当于printf,而cin是输入,相当于scanf。注意cin使用时不加”&“,同时注意箭头的方向。见下:

cout<<"请输入考试分数:";
cin>>score;
//局部开头的都不在全局区中
//全局区中:全局变量、静态变量(static)、常量【字符串常量、const修饰的全局变量(全局常量)】
#include<iostream>
using namespace std;
 
//全局变量
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<<endl;
 
  cout<<"全局变量g_a的地址为:"<<(int)&g_a<<endl;
  cout<<"全局变量g_b的地址为:"<<(int)&g_b<<endl;
  cout<<endl;
 
  //静态变量
  static int s_a=10;
  static int s_b=10;
  
  cout<<"静态变量s_b的地址为:"<<(int)&s_a<<endl;
  cout<<"静态变量s_b的地址为:"<<(int)&s_b<<endl;
  cout<<endl;
 
  //常量
  //字符串常量
  cout<<"字符串常量的地址为:"<<(int)&"hello world"<<endl;
  cout<<endl;
 
  //const修饰的变量
  //const修饰的全局变量
  cout<<"全局常量c_g_a的地址为:"<<(int)&c_g_a<<endl;
  cout<<"全局常量c_g_b的地址为:"<<(int)&c_g_b<<endl;
  cout<<endl;
 
  //const修饰的局部变量
  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");
}


目录
相关文章
|
1月前
|
存储 编译器 C语言
深入探索C语言动态内存分配:释放你的程序潜力
深入探索C语言动态内存分配:释放你的程序潜力
38 1
|
1月前
|
存储 程序员 C语言
【动态内存管理助力程序优化与性能飞升】(下)
【动态内存管理助力程序优化与性能飞升】
|
1月前
|
C语言
【动态内存管理助力程序优化与性能飞升】(中)
【动态内存管理助力程序优化与性能飞升】
|
1月前
|
存储 编译器 C语言
深入探索C语言动态内存分配:释放你的程序潜力
深入探索C语言动态内存分配:释放你的程序潜力
36 0
|
4天前
|
存储 Java C++
Java虚拟机(JVM)在执行Java程序时,会将其管理的内存划分为几个不同的区域
【6月更文挑战第24天】Java JVM管理内存分7区:程序计数器记录线程执行位置;虚拟机栈处理方法调用,每个线程有独立栈;本地方法栈服务native方法;Java堆存储所有对象实例,垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息;运行时常量池存储常量;直接内存不属于JVM规范,通过`java.nio`手动管理,不受GC直接影响。
16 5
|
4天前
|
算法 Java
垃圾回收机制(Garbage Collection,GC)是Java语言的一个重要特性,它自动管理程序运行过程中不再使用的内存空间。
【6月更文挑战第24天】Java的GC自动回收不再使用的内存,关注堆中的对象。通过标记-清除、复制、压缩和分代等算法识别无用对象。GC分为Minor、Major和Full类型,针对年轻代、老年代或整个堆进行回收。性能优化涉及算法选择和参数调整。
13 3
|
3天前
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
11 2
|
7天前
|
监控 算法 Java
Java虚拟机(JVM)使用多种垃圾回收算法来管理内存,以确保程序运行时不会因为内存不足而崩溃。
【6月更文挑战第20天】Java JVM运用多种GC算法,如标记-清除、复制、标记-压缩、分代收集、增量收集、并行收集和并发标记,以自动化内存管理,防止因内存耗尽导致的程序崩溃。这些算法各有优劣,适应不同的性能和资源需求。垃圾回收旨在避免手动内存管理,简化编程。当遇到内存泄漏,可以借助VisualVM、JConsole或MAT等工具监测内存、生成堆转储,分析引用链并定位泄漏源,从而解决问题。
17 4
|
8天前
|
编译器
程序的内存模型\栈区
程序的内存模型\栈区
19 4
|
3天前
|
程序员 C语言 C++
【C语言】:柔性数组和C/C++中程序内存区域划分
【C语言】:柔性数组和C/C++中程序内存区域划分
6 0