C语言与JAVA内存管理_认识C和内存管理
发布日期:2021-08-20 01:25:25 浏览次数:4 分类:技术文章

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

1. C语言家族1) C: Dennis Ritchie于1972年在贝尔实验室开发出来;是一种命令式语言(imperative system language)]

2) C++: Bjarne Stroustrup于1979年在贝尔实验室开发出来;是一种支持泛型(generics)的命令式,面向对象的语言

3)C#: 2001年,由微软开发。是一种多范型(multi-paradigm)编程语言,支持命令式、函数、泛型、面向对象和内存管理。

注: 命令式语言又称强制式语言,通过指明一系列可执行的运算及运算的次序来描述计算过程的语言。平时我们用的大多数语言(比 如,C,C+,Java,C#,Python等)都是命令式语言。与它相对的是函数式语言(functional language),如Haskell,Lisp。函数式语言更像数学,命令式语言更接近人的思维。

2. C的典型特征:

1)编译型语言(compiled language)(相对于解释型语言来说)

编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接运行编译的结果就行了。因此效率高

解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低

2)命令式的

3) 人工管理内存

4)当需要涉及以下问题时使用C:

-速度

-内存

-低层次特性(low-level features),如:移动stack pointer等

3. 内存抽象的层次(从内存的角度思考C...)

抽象层次                        编程语言

--------------------------------------

直接操作内存                     汇编语言

访问内存                           C,C++

内存自动管理                     Java,C#,Scheme/LISP,ML

4. C访问的内存: 堆(heap)

堆是一块儿用于动态内存分配的内存区域

1)把它想像称为一个巨大的数组

2)通过指针(pointer)来访问

3)整个程序都能访问堆(如果操作系统允许的话)

5. 人工内存管理: 堆(heap)

目的:

1) 允许程序能够分配内存用于当前的使用

2)当程序执行完后,能够释放内存,用于重新分配

C语言的标准类库(standard library)中有malloc和free两个函数支持内存管理

6. C访问的其它内存:棧(stack)

C语言中棧是编译器自动分配和回收,用于存放函数及其参数,局部变量等的内存区域

C函数将会分配到棧中:

1)函数在被调用时进棧(pushed on to stack)

2) 函数在返回时出棧(popefd off the stack)

3) 函数能访问当前棧顶部以下的所有内存(这里所谓的“顶部以下”如下图所示)

133c72fddb8956a89624831188efa2f1.png

7. C语言编译器:推荐使用GCC,一般是在linux下用gcc+vim写C程序。

转载地址:https://blog.csdn.net/weixin_32141627/article/details/114894823 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java9 stream_Java9 Stream API改进
下一篇:JAVA直接使用talib库_量化笔记:金融指数处理库talib介绍与安装

发表评论

最新留言

不错!
[***.144.177.141]2024年04月07日 09时32分14秒