发布时间:2014-04-14 11:25:19
malloc()并不是一个适用于所有场合的分配器malloc()因其通用性使用起来非常方便。它不会对分配和释放内存的情境做任何假设。内存的申请/释放可以是连续的,也可以在整个任务执行中分开,既能发生在同一线程中,也可以在不同线程中。分配器的通用性使得每次分配互不相同,这意味着不同生命周期的内存会共享相同的内存.........【阅读全文】
发布时间:2014-04-14 11:17:52
开发人员的视角在前面的文章中,我们由外在的视角对内存进行了分类、分析,并观察到内存可以按照不同的方式和属性来进行分配。在接下来的文章中,我们将站在开发人员的角度看待内存。在Intersec,我们所有的软件都是用C语言编写实现的,这也意味着我们得不断与内存管理打交道。我们希望开发人员对各种已有内存池.........【阅读全文】
发布时间:2014-04-14 11:00:15
从虚拟内存到物理内存在上篇文章中,我们介绍了一种进程所占内存分类的方法。通过2个坐标轴划分了4个象限:私有/共享和匿名/文件支持。我们也介绍了共享机制的复杂性和所有内存基本上是由内核回收的事实。这里我们谈论的都是虚拟内存。所有都是关于(虚拟)内存地址的申请,但申请的地址并不总是立即被内核映射到.........【阅读全文】
发布时间:2014-04-14 10:52:27
引言这里我们选择C语言作为编程语言,因为它能帮我们实现对程序的完全控制,并达到高的性能。许多人认为,提升性能就是尽可能的减少CPU指令。然而在现代的硬件架构上,性能要考虑的因素复杂得多,绝不仅仅是CPU。程序要处理内存,CPU,磁盘和网络I/O等等。每一项处理都会增加程序的开销,每一项处理必须被正确理解以.........【阅读全文】
发布时间:2014-04-11 12:03:24
前面的文章里面介绍了几种常用排序算法,通过算法实现可以看出,都是基于比较的方式进行排序,称为比较排序;而且它们的时间下界是O(n lgn)。下面的描述中将介绍三种线性时间排序算法:计数排序、基数排序、桶排序。时间下界O(n lgn)对于这三种排序算法是不适用的,这三种排序算法的下界是O(n)。一、计数排.........【阅读全文】