C++中的静态联编和动态联编
发布日期:2021-05-07 22:09:35 浏览次数:23 分类:精选文章

本文共 830 字,大约阅读时间需要 2 分钟。

文章目录


前言

  本文主要介绍C++编程中,静态联编和动态联编的概念。静态联编和动态联编是C++中的两种主要的地址分配的决策策略。

一、静态联编

  静态联编的决策策略是指,在对C++代码进行编译时,就进行地址和内存分配。使用静态联编的常见的地方就是申明一个变量:当声明某一类型的变量之后,编译器在编译相应源代码的时候,根据其数据类型分配内存空间和地址。如下代码所示,即使静态联编:
int a; // 在编译时,即确定好该变量的地址,并分配四字节内存(int为四字节)空间;double b;// 同上float c; // 同上

二、动态联编

  动态联编的决策策略是指,在运行C++程序时,根据代码逻辑才给变量分配内存和地址。常用的动态联编是给指针new一个动态地址:在申明一个指针变量之后,若不是直接指向已存在的变量,那么就是通过new动态分配内存和地址进行初始化。如下代码所示:
int *p = new int;*p = 10; // 如果没有上句代码后面的new int, 那么执行改代码就会出错delete p; // 记得不再使用new分配的内存地址时,一定要用delete释放内存,否在将会造成内存泄漏
  显然上述代码没有体现动态联编的策略,为了体现该决策策略,可以定义一个简单的状态机,如下代码所示:
int flag;int a = 66;int *p;cin>>flag;switch(flag){   case 1:p = &a;		break;case 0:p = new int;		*p = 88;		break;}

  上述代码相当于定义了一个简单的状态机。先设置一个标志位,然后进行输入,如果flag=1,则将前面事先定义的int指针指向定义的变量a,若是flag=0,则对p动态分配内存,然后再进行赋值操作为88。

  动态联编的优点很明显,就是程序员可以决定什么时候为指针分配内存地址,这样可以有效的利用内存空间。

上一篇:OpenCV3.3.1 在Ubuntu20.04上显示一张图片出现Gtk-WARNING警告提示
下一篇:C语言中,容易中招的陷阱

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月20日 18时45分21秒