运行时库是什么东东?
运行时库是什么东东?
为什么堆要在运行时库中初始化呢?不是程序中使用new的时候再申请,再初始化的吗?
[解决办法]
在计算机程序设计领域,运行时库是一种被编译器用来实现编程语言内置函数,以提供该语言程序运行时(执行)支持的一种特殊的计算机程序库。这种库一般包括基本的输入输出或是内存管理等支持。
运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供
[解决办法]
运行时库可以理解为语言的辅助。比如,对于程序员来说,printf就是终端输出函数,这就是C的标准,你知道这一层即可,而不必知道printf是怎样把字符写到显存RAM中,OK,这叫封装,C程序员是站在C的角度来编程的,而不是茹毛饮血的汇编。函数是很好的封装,一些库函数更是一些IT精英智慧的精华,他们替我们抽象了计算机,使得我们在一个更高的层面操控机器。库函数就是这样的函数,内存管理,I/O控制,这些都是计算机软硬件领域复杂的部分,库函数替我们解决那些复杂问题,读取文件,你现在已经不需要通过向端口里写指令了,而只需要fopen函数,同样对于内存的申请,你需要的是malloc。对于32位系统来说,你系统4G的空间是需要管理的,哪个区域是系统区,哪个区域是堆,哪个区域是显存区,这些都在操作系统的“脑子”里装着的。对于堆这个区域,这是系统中一块未开垦的沃土,是几十年前的北大荒,程序可以在运行的过程中动态申请,C里面是用malloc,C++用new,用什么谓词申请无所谓,关键是申请的过程中库函数干了什么。系统中一定有堆管理员,堆管理员位于内核区域,申请的过程中,malloc向堆管理员提出申请,然后堆管理员在自己的“账簿”里记录一下:内存0x324ae-0x35233区域被王二申请了。以后别人来申请的时候,这片地就不在可调度的资源里面了,同时你要记住,这片地你只有使用权没有所有权,用完了,要通过delete归还给“国家”,要重新进入分配过程。以上就是malloc干的活,至于C++里面的new,你可以认为new=malloc+类构造函数,归根到底还是调用了malloc。你可以把C++看成编程语言,也可以将其看做以C为基础的编程框架,在new中,C++作出诸多优化,如果你有兴趣,可以找点读读C++中的allocator的实现。