大家好,今天给大家分享一下,从语言角度来讲:对比常见的几种语言对内存的管理方法。
(1)汇编语言:根本没有任何内存管理,内存管理全靠程序员自己,汇编中操作内存时直接使用内存地址(譬如0xd0020010 ),非常麻烦,但如果用得好,程序执行效率是最高的。
(2)C语言:C语言中编译器帮我们管理内存地址,我们都是通过编译器提供的变量名等来访问内存的,操作系统下如果需要大块内存,可以直接通过APl ( malloc free)来访问系统内存。裸机程序中所需的大块内存需要自己来定义数组等来解决。
(3)C++语言:C++语言对内存的使用进一步封装。我们可以用new 来创建对象(其实就是为对象分配内存),使用完后用delete来删除对象(其实就是释放内存)。所以C++语言对内存的管理比C语言要高级一些,也容易一些。但是C++中内存的管理还是靠程序员自己来做。如果程序员用new创建一个对象,但是用完之后忘记 delete,就会造成这个对象占用的内存不能释放,这就是内存泄漏。
( 4 ) Java/C#等语言:这些语言不直接操作内存,而是通过虚拟机来操作内存。这样虚拟机作为我们程序员的代理,来帮我们处理内存的释放工作。如果我的程序申请了内存,使用完成后忘记释放,则虚拟机会帮助我释放掉这些内存。听起来似乎C#/Java等语言比C/C+十有优势,但是其实虚拟机回收内存是需要付出一定代价的。所以说语言没有好坏,只有适应不适应。当程序对性能非常在乎的时候(如操作系统内核),就会用C/C++语言;当我们对开发程序的速度非常在乎的时候,就会用Java/C#等语言。