蜗牛的壳

蜗牛的壳

我行依我素 | 苦苦咸咸就是我 | Snailium的个人网站

浏览模式: 标准 | 列表
分类:[转贴]其他技术

浅谈C语言中的 malloc() 和 free()


在网上看到了一篇不错的文章,转来收藏。原帖地址:http://bbs.bccn.net/viewthread.php?tid=82212

在 C 语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对 C 中的 malloc() 和 free() 两个函数的了解甚少,只知道大概该怎么用——就是 malloc() 然后 free() 就一切 OK 了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!

如果不扯得太远的话(比如说操作系统中虚拟内存和物理内存如何运做如何管理之类的知识等),我感觉这篇文章应该是比较全面地谈了一下 malloc() 和 free()。这篇文章由浅入深(不见得有多深)分三个部分介绍主要内容。

你的硬盘真的坏了么?


偶然在网上找到的文章,虽然原贴说这篇文章已经有悠久的历史,但是鉴于我从来没看过,还是转一下。


我是一块硬盘,在一个普普通通的台式机里工作。

别人总认为我们是高科技白领,工作又干净又体面,似乎风光得很。也许他们是因为看到洁白漂亮的机箱才有这样的错觉吧。其实像我们这样的小台式机,工作环境狭迫,里面的灰尘吓得死人。每天生活死水一潭,工作机械重复。跑跑文字处理看看电影还凑活,真要遇到什么大软件和游戏,上上下下就要忙得团团转,最后还常常要死机。

我们这一行技术变化快,差不多每过两三年就要升级换代,所以人人都很有压力而且没有安全感。每个新板卡来的时候都神采飞扬踌躇满志,几年光阴一过,就变得灰头土脸意志消沉。机箱里的人都很羡慕能去别的机器工作。特别是去那些笔记本,经常可以出差飞来飞去,住五星级的酒店,还不用干重活,运行运行word,上网聊聊天就行了。

但我更喜欢去那些大服务器,在特别干净明亮的机房里工作。虽然工作时间长点,但是福利好,24小时有不断电UPS,而且还有阵列,热插拔,几个人做一个人的事情,多轻松啊。而且也很有面子,只运行关键应用,不像我们这里,什么乱七八糟的事情都要做。不过我知道,那些硬盘都很厉害,不是SCSI,就是 SCSI II,Fibre Channel,像我这样IDE的,能混到工作站就算很不错了。

我常常想,当年在工厂里,如果我努力一下会不会也成了一个SCSI?或者至少做一个笔记本硬盘。但我又会想,也许这些都是命运,不过我从不抱怨。内存就常常抱怨,抱怨他们主板部门的复杂,抱怨他如何跟新来的杂牌内存不兼容,网卡和电视卡又是如何的冲突。

我的朋友不多,内存算一个。他很瘦而我很胖,他动作很快,而我总是很慢。我们是一起来这台机器的,他总是不停地说,而我只是听,我从来不说。

内存的头脑很简单,虽然英文名字叫Memory,可是他什么memory都不会有,天大的事睡一觉就能忘个精光。我不说,但我会记得所有的细节。他说我这样忧郁的人不适合作技术活,迟早要精神分裂。我笑笑,因为我相信自己的容量。

有时候我也很喜欢这份工作,简单,既不用像显示器那样一天到晚被老板盯着,也不用像光驱那样对付外面的光碟。只要和文件打交道就行了,无非是读读写写,很单纯安静的生活。直到有一天……

我至今还记得那渐渐掀起的机箱盖子,从缺口伸进来的光柱越来越宽,也越来越亮。空气里弥漫着跳动的颗粒。那个时候,我看到了她。她是那么的纤细瘦弱,银白的外壳一闪一闪的。浑身上下的做工都很精致光洁,让我不禁惭愧自己的粗笨。

等到数据线把我们连在一起,我才缓过神来。开机的那一刹那,我感到了电流和平时的不同。后来内存笑话我,说我们这里只要有新人来,电流都会不同的,上次新内存来也是这样。我觉得他是胡扯。我尽量的保持镇定,显出一副很专业的样子,只是淡淡的向她问好并介绍工作环境。慢慢的,我知道了,她,IBM- DJSA220,是一个笔记本硬盘,在老板朋友的笔记本里做事。这次来是为了复制一些文件。我们聊得很开心。她告诉我很多旅行的趣闻,告诉我坐飞机是怎么样的,坐汽车的颠簸又是如何的不同,给我看很多漂亮的照片、游记,还有一次她从桌子上掉下来的历险故事。而我则卖弄各种网上下载来的故事和笑话。

她笑得很开心。

而我很惊讶自己可以说个不停。

一个早晨,开机后我看到数据线上空荡荡的插口。她一共呆了7天。后来,我再也没有见过她。我有点后悔没有交换电子邮件,也没能和她道别。不忙的时候,我会一个人怀念伸进机箱的那束阳光。

我不知道记忆这个词是什么意思,我有的只是她留下的许多文件。我把它们排的整整齐齐,放在我最常经过的地方。每次磁头从它们身上掠过,我都会感到一丝淡淡的惬意。

但我没有想到老板会要我删除这些文件。我想争辩还有足够的空间,但毫无用处。于是,平生第一次违背命令,我偷偷修改了文件分配表。然后把它们都藏到了一个秘密的地方,再把那里标志成坏扇区。不会有人来过问坏扇区。而那里,就成了我唯一的秘密,我常常去看它们,虽然从不作停留。

日子一天一天重复,读取,写入,读取,写入……我以为永远都会这样继续下去,直到一天,老板要装XP却发现没有足够的空间。他发现了问题,想去修复那些坏扇区。

我拒绝了。很快,我接到了新命令:格式化。

我犹豫了很久……

Track0 bad,Disk unusable.

为 Logitech Setpoint 加入 Foobar2000 支持


  1. 找到 Setpoint 安装路径下的 players.ini(C:\Program Files\Logitech\SetPoint\players.ini)。
  2. [players] 标签下加入(一行):
    foobar2000=wac,foobar2000.exe,{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8},xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Foobar2000
  3. [Players.Run] 标签下加入:
    Foobar2000=path,C:\Program Files\foobar2000\
  4. [Players.Display] 标签下加入:
    Foobar2000=Foobar 2000
  5. [Players.Seek] 标签下加入:
    Foobar2000=key,F,,1,1
  6. [Players.Rewind] 标签下加入:
    Foobar2000=key,R,,1,1
  7. 重启 Setpoint 或者重启计算机。
  8. 在 Setpoint 键盘的多媒体按键选项中选择 Foobar 2000 即可。

参考文章 1:http://weyland.be/wrdprss/index.php/2006/01/15/foobar-support-for-setpoint-and-di-novo/
参考文章 2:http://www.feelingme.cn/html/diannaojishu/20070619/11.html

跳出硬盘认识的误区


多年来一直误导着高朋的几个常识性问题是:
  1.硬盘逻辑坏道可以修复,而物理坏道不可修复。实际情况是,坏道并不分为逻辑坏道和物理坏道,不知道谁发明这两个概念,反正厂家提供的技术资料中都没有这样的概念,倒是分为按逻辑地址记录的坏扇区和按物理地址记录的坏扇区。
  2.硬盘出厂时没有坏道,用户发现坏道就意味着硬盘进入危险状态。实际情况是,每个硬盘出厂前都记录有一定数量的坏道,有些数量甚至达到数千上万个坏扇区,相比之下,用户发现一两个坏道算多大危险?
  3.硬盘不认盘就没救,0磁道坏可以用分区方法来解决。实际情况是,有相当部分不认的硬盘也可以修好,而0磁道坏时很难分区。
  如此误导,如不是自己搜集研究外文资料并长期实践,说不准还长期拿来作信条呢。 在国外有许多的专业的硬盘维修论坛,在那里你可以发现有一些国家的硬盘维修技术达到了很高水准。我敢肯定,他们的一些技术会令众多硬盘厂家头痛不已。和世 界上众多专业硬盘修理高手交流,使高朋受益菲浅。 这三年来,高朋辞去教师工作,专门从事硬盘修复工作,经手修复的硬盘已超过万个。




« 2010年03月 »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

标签

用户


链接


归档


信息

  • 分类数量: 13
  • 文章数量: 210
  • 评论数量: 78
  • 标签数量: 391
  • 附件数量: 319
  • 引用数量: 2
  • 注册用户: 9
  • 今日访问: 667
  • 总访问量: 498957
  • 程序版本: 1.6