| This Is My Life, Rated | |
| Life: | |
| Mind: | |
| Body: | |
| Spirit: | |
| Friends/Family: | |
| Love: | |
| Finance: | |
| Take the Rate My Life Quiz | |
2011年4月7日 星期四
my life rate
2011年3月12日 星期六
2011年2月9日 星期三
2010年9月13日 星期一
转:谁分配谁释放
在《Windows核心编程》第19章有一段话,
必须注意的是,单个地址空间是由一个可执行模块和若干个D L L模块组成的。这些模块中,有些可以链接到静态版本的C / C + +运行期库,有些可以链接到一个D L L版本的C / C + +运行期库,而有些模块(如果不是用C / C + +编写的话)则根本不需要C / C + +运行期库。许多开发人员经常会犯一个常见的错误,因为他们忘记了若干个C / C + +运行期库可以存在于单个地址空间中。请看下面的代码:
VOID EXEFunc() {
PVOID pv = DLLFunc();
// Access the storage pointed to by pv...
// Assumes that pv is in EXE's C/C++ run-time heap
free(pv);
}
PVOID DLLFunc() {
// Allocate block from DLL's C/C++ run-time heap
return(malloc(100));
}
那么你是怎么看待这个问题的呢?上面这个代码能够正确运行吗? D L L函数分配的内存块是由E X E的函数释放的吗?答案是可能的。上面显示的代码并没有为你提供足够的信息。如果E X E和D L L都链接到D L L的C / C + +运行期库,那么上面的代码将能够很好地运行。但是,如果两个模块中的一个或者两个都链接到静态C / C + +运行期库,那么对free函数的调用就会失败。我经常看到编程人员编写这样的代码,结果都失败了。
为什么包含这段代码的EXE和DLL不能静态链接,而且任何一个模块都不能静态链接?原因如下:
在VC的C运行库中有一个全局句柄_crtheap,malloc和free都是在这个句柄上使用HeapAlloc和HeapFree来分配释放内存的。如果所有模块都使用动态链接,那么进程空间中只载入一个C运行库,也就只存在一个_crtheap。反过来,只要有一个模块静态链接了C运行库,那么运行库中的全局变量将会被复制一份到该模块中,这样就存在两个_crtheap,进程初始化的时候就会调用HeapCreate创建两个不同的堆,很明显,在DLL的堆上分配的内存拿到EXE中用HeapFree是释放不了的,将会引发内存访问异常。所以,谁分配就应该谁释放,因为我们不是任何时刻都很清楚库函数的资源分配规则。
2010年5月20日 星期四
how to write a seal/final class via C++
2010年2月22日 星期一
John的个人秀——Lost Final season E04
本集基本就是一场撤撤底底的Locke个人秀,同时Sawyer华丽的做了一次绿叶。
洛杉矶,Locke回到家,家里等着他的是自己的未婚妻Helen,还记得她吧,就是她摔坏腿前的那个女友,对的,完美世界里他们要结婚了。所谓情场得意,事业失意,到了公司就因为没有老老实实在悉尼参加会议被Fire了,据称他偷跑去从林冒险了,事实上就和原版故事一样,人家就没让他去,他自己在那里自哀自怨了一番自然更没心情去开什么会了。
然而主角总是好运缠身,在停车场遇到了自己公司的老总Hugo,对的,这个世界里Hugo也得到了Happy ending,看起来他身上所有的灾难都没有发生了。一番谈话后Hugo让Locke去自己的另一家公司上班。真是好人哪!而另一家公司的负责人是得了癌症的Rose,最后她把Locke安排到学校去教书了,到了教师休息室看到了因为没人换咖啡滤纸而喋喋不休的欧洲历史学老师Ben,看来The others和Ocean众真是扯不断啊。
相比之下岛上就紧张多了,在黑烟版Locke因为其不和作正打算要干掉Richard的时候,一个只有他自己能看到的小孩出现了,看起来黑烟也有所顾忌,留下一番狠话后就放Richard走了。之后黑烟去找Sawyer,令人意外的是Sawyer一眼就认出了他不是Locke,当然这不重要,之后黑烟说服他跟自己走,向其证明他们来到小岛不是偶然。在路上的时候,之前那个小孩再次出现,给黑烟留下了一句,你知道规矩,你不能杀他。神奇的是Sawyer也能看到他。之后他们一起爬下悬崖到了一个洞里,洞的深处写满了名字,包括了Jack Sawyer等人,黑烟顺手划掉了Locke的,看来所有被划掉的名字的主人都向死神报道去了。诧异之时黑烟说出了玄机,这些名字都是候选者,Jacob的侯选。而且可以确定Jacob一定在某个时候见过这些人,看起来他们都是偶然到了岛上,实际上都是Jacob推波助澜而来。
最后事情就明了了,或者说看起来明了了,据黑烟所说Sawyer就是下一任Jacob,而他有三个选择,静观其变,或者是成为下任Jacob守护小岛,又或者是干脆放手,离开小岛。看来第三种选择对Sawyer更有吸引力,而这据称也刚好是黑烟的最大目的,他俩将要一起离岛了。
2010年2月16日 星期二
Claire归来-Lost Final Season E03
2010年2月8日 星期一
最终季——Lost归来
Happy ending?没那么好的事了,首先是Charlie因为大麻被捕,Jin因为携带巨额现金被海关拉去问话,然后是Kate打翻FBI,持枪劫车再度潜逃,巧的是正好劫到了Claire的出租车,值得一提的是Jack的钢笔被她所偷,而在劫车之前还得到了Sawyer的一点帮助,最后是Jack和John,两人遭遇机场经典事件——行李失踪,分别是一箱刀子和装着老爸尸体的棺材一具,难道是Jack的老爸爬出棺材,偷了刀子跑路?两人在申报处相遇,一翻交流之后分道扬镳,考虑到Jack建议John来找自己免费咨询脊柱问题,两人应该还有更多的交集。
故事难道就此变成Lost之洛杉矶现实版。可惜Lost永远都是Lost,没有了闪前闪回,平行世界闪亮登台。在另一个世界里,Jack等人在氢弹爆炸之后从70年代回到了现在,大家从天鹅站的废墟里找到了Juliet,和Sawyer一番决别之后闭上了眼睛,在埋了她之后才得到了她的遗言——It's works,Hugo听从死后的Jacob的指示把大家带往神庙救助重伤的Sayid,到达黑烟所在的地洞之后被一帮人打翻拖到了神庙,原来是久违的The others,还记得第一季被抓的两个小孩还有某些所谓在Jacob名单上的人吗?都在这活得好好的呢。在报上Jacob的大名后,抄着日语的带头大哥把Sayid沉在水里,可惜伤没治好,人先挂了。
然后是假John,和第二架飞机上的人一番你来我往,干掉几个人并绑走Richard之后,其真面目终于揭露,他就和Jacob在一起的那家伙,并且他就是黑烟,而其目的是"回去"。回去哪呢?我大胆猜测是回外星。至于黑烟是什么呢?大家继续等待吧。不过看起来可以用某种粉末围个他穿不破的结界。再次大胆猜测他要回地狱。
最后是The others听说Jacob已死之后如临大敌,马上来始备战起来。而就在Jack和The others起冲突时Sayid一脸困惑的坐了起来。
Lost永远是Lost,解决掉的密团总是没有留下的多。
2010年2月6日 星期六
The end - dollhouse
某公司发现了人脑编程指令。当这项技术从理论变为可用时,他们建立起了称为dollhouse的机构,征招了一批或自愿或被迫的人成为玩偶,将他们所有记忆移到一个硬盘里。然后再不断植入各种印记,表面上的目的是为了满足各种客户的需要——成为车祸死掉的妻子,成为CIA的特工,成为极具天赋的歌手,等等等等。5年合约满之后将会返还你的原始人格并得到一笔丰厚的报酬。
一切看似简单直接的运行着,可惜,正如所有的历史一样,这一切不过是个开始,试想如果将自己的人格不断植入新的身体,一个伴随人类文明史不断被追寻的玩意——长生不老就此闪亮登台,还没完呢,如果能对任何人都很简单的使用这技术,那一份统治全人类的终极权力就此获得,长生不老+终极权力,多么美妙的组合啊。
正如所有的故事一样,在一切灾难中总会出现英雄。Echo——被迫成为玩偶多年,在缺少自我人格的情况下却发展出了独立人格。如此如此这般这般之后,拯救了全人类。
一部优雅的剧集,高科技的表面之下描述的是充满无奈和绝望的愿望。剧终时死去的男主角在Echo脑中复活,一切都美的如童话一般。
可惜播出两季就草草结束了。过于另类的风花雪月还是无法让常人接受。
"我们的业务是出售愿望,欢迎来到玩偶屋"。