自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ycnian

这个人很懒,他什么也没有留下

  • 博客(10)
  • 收藏
  • 关注

原创 dlmalloc(四)

这篇文章我们来讲讲释放内存的过程,也就是free()的代码流程。对于应用程序来说释放内存很简单,直接调用free(ptr)就可以了,参数是要释放的内存块指针。那么,释放内存时dlmalloc做了哪些工作呢?

2013-10-28 11:03:40 2685

原创 dlmalloc(三)

有了上篇文章的基础,现在可以详细分析malloc()申请内存的流程了,代码如下:void* dlmalloc(size_t bytes) { /* Basic algorithm: 算法描述 If a small request (< 256 bytes minus per-chunk overhead): 1. If one exists, us

2013-10-25 15:53:23 4290

原创 dlmalloc(二)

dlmalloc

2013-10-24 16:43:57 4280

原创 dlmalloc(一)

我们写过很多C程序了,经常会分配内存。记得刚学C语言时老师说过,可以向两个地方申请内存:一个是栈、一个是堆。小块内存向栈申请,函数调用结束后程序会自动释放内存。大块内存向堆申请,记得一定要自己释放,否则会造成内存泄漏。向堆申请内存直接调用malloc()就可以了,参数是你申请的内存量。释放内存时直接调用free()就可以了,参数是内存块指针。看似平静的海面,海底则波涛汹涌。当时还没有学操作系统

2013-10-23 15:37:26 10219 2

原创 字符串处理函数

这篇文章中我想讨论下strlen()的问题。strlen()的作用是计算一个字符串的长度,最简单的代码如下:size_t strlen(const char *str){ const char *s; for (s = str; *s; ++s) ; return (s - str);}

2013-10-22 17:04:46 983

原创 数学函数库(三)

上一篇文章中我们以truncf()为例讲解了数学函数的处理过程,可以看出处理过程还是很麻烦的。而且需要注意的是我们挑选的是一个很简单的函数,其他数学函数的处理过程更麻烦。因此一些处理器集成了浮点运算单元,通过硬件计算数学函数,从而加快了数学函数的处理过程。这篇文章中,我想以X86架构为例说明硬件处理数学函数的过程。

2013-10-21 18:04:41 1344

原创 数学函数库(二)

上一篇文章中我们熟悉了浮点数在内存中的存储方式,这篇文章中我们来分析一下数学库中提供的函数。数学库中包含了很多函数,比如取整函数、三角函数、指数对数函数、贝塞尔函数、伽马函数等等,很多函数是对具体一个算法或数学问题的描述。我们从中挑选了一个简单的函数,目的是分析清楚数学库中浮点数的处理过程,同时又不要陷入数学问题当中。我们挑选的函数是truncf(),这个函数声明如下:float truncf

2013-10-21 16:12:48 1186

原创 数学函数库(一)

首先来看下面这个小程序#include int main(){ float var1 = 33554434.0; float var2 = 33554433.0; printf("%f\n", var1 - var2); return 0;}程序很简单,那么这段代码的输出是什么呢?遗憾地告诉大家:这段代码的输出

2013-10-21 13:42:35 1236

原创 最小C基础库

还是从我们最熟悉的程序说起,我们学编程时接触到的第一个程序就是helloworld,代码如下:#include int main(){ printf("hello world\n"); return 0;}我们使用gcc编译这个程序  gcc -o helloworld  hellworld.c就可以生成可执行文件helloworld,执

2013-10-12 23:05:38 1980

原创 C基础库

最近看了点C基础库的代码,主要是Android系统的C基础库bionic,对比浏览了一些glibc的代码,多少有一些收获吧。好久没更新博客了,写几篇C基础库的文章算是记录这段时间的学习过程吧。    C基础库是操作系统中最底层的函数库,提供了大量的基础函数,比如标准I/O函数、字符处理函数、字符串处理函数、数学函数、内存分配器等,基本上就是实现了C99标准中规定的函数。C基础库之所以称为“基础

2013-10-12 22:37:19 1635

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除