最近需要编译不同平台的库,因此比以前只开发C++程序关注底层更多点。先来看看术语runtime system的解释。

主要参考资料:

http://en.wikipedia.org/wiki/Runtime_system

runtime system有时候就简称runtime, 但是runtime字面意义是运行的时候发生的事情,范围很广。所以我这里仍然用runtime system.

无论什么计算机语言,都会在运行时执行一定的策略,或多或少而已。这些策略显然是一些可以运行的代码,这些代码一定会出现在你的可执行程序里面。我把实现这些策略的这些代码叫做runtime system. 因此这是一个人为制造出来的东西,它可以做的很少,比如C,也可以做的很多,比如Java或者其他更高级的动态语言。或许有些语言会定义一个标准,runtime system应该做哪些工作,或许不同的编译器实现者自己决定让runtime system干点什么。毕竟,说到底就是一段人写的代码。

先看看C的runtime-system都能干些什么。它管理进程的堆栈,创建局部变量所用的空间,把调用参数压入函数栈,维护栈的状态。

而在面向对象语言中,runtime-system还可以做类型检查和方法寻址(resolving method references),还可以做内存池管理等等, 比如Java的runtime system。

如果这部分代码被放在动态或者静态库中供应用程序链接,就叫做runtime library. 比如下图VC中:

http://msdn.microsoft.com/en-us/library/ms235265.aspx

最后,不要把C++标准库和runtime library等同起来。前者是提供了C++标准库的所有实现,比如GCC的libstdc++,后者是运行时系统。

理解runtime system的更多相关文章

  1. Objective-C的Runtime System

    [0] Outline --  [1] 版本和平台 --  [2] 与Runtime System交互 --  [3] 方法的动态决议 --  [4] 消息转发 --  [5] 类型编码 --  [6 ...

  2. java基础21 System类和Runtime类

    一.System系统类 1.1.System系统类 主要用于获取系统信息 1.2.System类的常用方法 arraycopy(Object src, int srcPos, Object dest, ...

  3. File类--System.out.print(Object obj)的理解

    一.File 类(java.io) 概述:Java中使用File类来表示文件或者文件夹对象!     抽象路径名:描述文件或文件夹时,使用的路径符号,就是一个对象的字符串表示形式,如"c:\ ...

  4. ArrayList集合--关于System.out.print(Object obj);的理解

    1.ArrayList集合中常用的方法 ArrayList<Student> stuArrayList = new ArrayList<>(); //定义一个集合对象 stuA ...

  5. iOS --runtime理解

    iOS~runtime理解 Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西.最近在学习Runtime,有自己的一些心得,整理如下,一为 查阅方便二为 或许能给 ...

  6. iOS开发——高级特性&Runtime运行时特性详解

    Runtime运行时特性详解 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 ...

  7. Objective C运行时(runtime)

    #import <objc/runtime.h> void setBeingRemoved(id __self, SEL _cmd) { NSLog(@"------------ ...

  8. 【引】runtime全解析,P1:Programming Guide

    h2.Overview Objective-C language defers as many decisions as it can from compile time and link time ...

  9. Runtime的几个小例子(含Demo)

    一.什么是runtime(也就是所谓的“运行时”,因为是在运行时实现的.)           1.runtime是一套底层的c语言API(包括很多强大实用的c语言类型,c语言函数);  [runti ...

随机推荐

  1. c++与C# winform的消息通讯--(结构体与byte数组的使用)

    近期正在做一个蓝牙驱动的使用程序,其中有一块从c++发送数据到C#的部分,网上查了很多资料,大多都是介绍如何通过调用函数获取用户数据.并且在消息发送中,很少介绍如何发送一个结构体,并且结构体里面有 b ...

  2. 点击listview 的列头对其item进行自动排序

    若要自定义排序顺序,必须编写一个实现 IComparer 接口的类,并将 ListViewItemSorter 属性设置为该类的一个对象.当设置 ListViewItemSorter 属性值时,将自动 ...

  3. jquery的插件机制

    jQuery的内核; (function( window, undefined ) { //这就是jQuery的原型 var jQuery = function( selector, context ...

  4. PL/SQL学习(二)条件和循环语句

      原文参考:http://plsql-tutorial.com/   PLSQL条件语句 IF THEN ELSE STATEMENT 1) IF condition THEN  statement ...

  5. odoo 使用 80 端口

    OE安装好,一般需要通过 8069端口来访问. 1:Aapche2 安装 sudo apt-get install apache2 2.安装mod_proxy cd /etc/apache2/mods ...

  6. MySQL partition分区I

    http://blog.csdn.net/binger819623/article/details/5280267 一.        分区的概念二.        为什么使用分区?(优点)三.    ...

  7. PYTHON常见数据类型示例

    shoplist = ['apple', 'mango', 'carrot', 'banana'] print('I have ', len(shoplist), ' items to purchas ...

  8. CAS单点登录配置[3]:服务器端配置

    在准备工作,证书生成等工作完成后,本篇介绍服务器端的配置. JDK配置 1 我们将生成的cacerts文件分别拷贝到JDK目录下的jre/lib/security目录下及JRE对应的目录中,如果之前存 ...

  9. ANDROID_MARS学习笔记_S03_002_设置可见性及扫描蓝牙设备

    一.代码 1.xml(1)AndroidManifest.xml <uses-permission android:name="android.permission.BLUETOOTH ...

  10. 没做过编译器就是被人欺——从一道变态的i++题猜编译器的行为(表达式从左往右扫描,同一变量相互影响)

    首先不要被人蒙了,如果是这样,根本编译不过: int i=1; int b=i+++++i; printf("%d %d\n", b ,i); Mingw报错:error: lva ...