内存分配器
传统的内存分配和现代的内存分配
传统的内存分配是在需要内存的时候使用 malloc()
函数直接向操作系统申请内存,在释放内存的时候用 free()
把内存还给操作系统。
malloc = memory allocate
直接使用这两个函数来管理内存的问题在于,每次申请内存都是一个很耗时的操作,而且频繁申请和释放内存会导致内存有很多碎片(外部碎片)。
传统的内存分配是在需要内存的时候使用 malloc()
函数直接向操作系统申请内存,在释放内存的时候用 free()
把内存还给操作系统。
malloc = memory allocate
直接使用这两个函数来管理内存的问题在于,每次申请内存都是一个很耗时的操作,而且频繁申请和释放内存会导致内存有很多碎片(外部碎片)。
In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection. —— wikipedia
在计算机科学中,关联数组、映射、符号表或者字典是一种由一系列(键、值)对组成的集合,且集合中的每个键最多出现一次。
In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection. —— wikipedia
在计算机科学中,关联数组、映射、符号表或者字典是一种由一系列(键、值)对组成的集合,且集合中的每个键最多出现一次。 —— 维基百科
本文所用源码为 PHP 7.4.4 的版本。
PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。 —— PHP 官方文档中文版
替换文本(search 替换为 replace)sed 's/search/replace/g' text-file.txt
删除空行(包括仅包含空格的行)sed '/^\s*$/d' text-file.txt
这篇文章所使用代码的完整版见:https://github.com/schaepher/c-objcet-oriented
面向对象的三个基本特征是:封装、继承、多态。
C 语言的文件通常分为两种:用于声明的 .h
头文件,用于实现的 .c
文件。