读书笔记3

原创 2004年10月31日 00:23:00


再论this指针

以下是,笔记5在其他bbs上讨论的结论,现re出,也作为笔记8的内容吧。
这几天没看书了。呵呵:)
首先,在32位操作系统中,指针占4b,(呵呵我想大家都知道,废话而已),所以p1在
t
his+4的位置。
其次,笔记5中this指针的确是指向b的隐含父类A,这个父类可以说是b中
的父类
再次,再vc编译器和win操作系统中,b与他的这个隐含父类是同址的,也就是说,这个

指针也是指向b本身的。
然后,之所以this指针调用aaa时是b的,而不是他隐含父类的,是因为在vftable中只有

一个虚函数,那就是b中的那个,而且vftable跟上述两者也是同址的,至于vftable是什

么,相信那些不是玩雕虫小技的大侠知道了,我也步赘述了!
最后,就是这个虚函数的位置,他到底在堆中呢,还是栈中呢?答案是在代码段中,至于如何寻址,不得而知!


再论变量(对象)存在方式
在vc和win下,存在的四种情况的对象方式,即:stack、 heap、 global、 local static
其中,有理由相信global、 local static被组织在一起(一家之言),即是说他们被分配在同一内存区,或者说他们的地址相连续。
而,stack和heap是各自独立的内存区。姑且将他们分别记为A、B、C内存区(按上述的顺序)。
那么变量到底被分配在那个内存区呢?
1)全局变量、静态变量(除去new生成的)在A区;
2)全局new的变量和 在main()内部或函数内部的用new生成的变量在C区;
3)函数内、main()内部、类成员变量位于B区;
4)函数、类成员函数(与虚实无关)位于代码段中,至于他们是怎么被寻址的,我还没告明白!
(一家之言!)
呵呵,没了!

结论变量(对象)的存在方式
终于清楚了9中所谓寻址问题,所以在此赘述了。
要谈这个问题,其实是在说所谓的win32 PE文件格式,这其实也设计到dumpbin的事,所以上面连re了n次!:)
在debug版下,可以发现,其实exe中(只谈exe,没有dll的事,呵呵)的.data块中存了全局变量和局部静态变量,还有所谓的字符串,
局部变量载入到一个线程的堆栈中,9中说了。.bss块中是为初始化的全局变量和静态局部变量。
但是,我debug了一下,发现如下:
1)上述的所谓的初始化和未初始化的问题,好像在vc下不明显了,就是说,他们(初和未初的)好像是彼此交错的存在玉ram中,而且有跳跃。不是why?
2)所谓的寻址问题(9中),据说(之所以用据说,是因为我没有实际去dumpbin看,而且很费劲的说!:),有空大家自己研究一下,然后告诉我们好了,呵呵! )是在.idata块中的call[XXXX]来寻址的,xxxx为函数地址,所以好像debug时没发现这个地址存在什么地方。
3)至于关于win32 PE的文件格式介绍,我copy了一篇,但是没属别人名字,就当自己的下篇了,毕竟是精华截取,没有完全copy嘛!况且我的题目也是笔记的说,呵呵,节省大家时间嘛。看了有发现告诉大家一声,呵呵,希望你们有兴趣。!
最后,其实这个结论篇也没什么结论,但是这个话题太伤脑筋了,而且时费力不讨好啊!:)


善其事,利其器
(都是废话!:))
vc包括两个版本:Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则Debug和Release版本对DLL的要求差不多。如果采用的编译选项为使用MFC动态库,则需要MFC42D.DLL等库支持,而Release版本需要MFC42.DLL支持。
    

《Programming in Lua 3》读书笔记(十)

日期:2014.7.11 Part Ⅱ  Metatables and Metamethods Lua中不能直接对table进行相加、比较等操作。除非使用元表(Metatables)。元...
  • u011894560
  • u011894560
  • 2014年07月13日 16:01
  • 883

《Linux设备驱动开发详解》读书笔记(3)

第一章,    并发控制 Linux2.6.35之后取消了中断的嵌套。 读写乱序。可以通过barrier()来防止编译乱序,volatile防止读优化,DMB /DSB /ISB防止运行乱序。Li...
  • luchunpeng
  • luchunpeng
  • 2017年01月09日 22:37
  • 134

《注意力曲线》读书笔记

生活在数字时代,最大的挑战就是信息洪流持续占有你的注意力。要么无聊,要么焦虑。合理的管理注意力变得非常重要。 注意力是什么? 注意力是一种资源,它就像人的探照灯,你要选择把它集中,照亮某个区域。 控制...
  • rogeryu1234
  • rogeryu1234
  • 2017年05月03日 17:10
  • 293

《算法导论(第3版)》读书笔记(一)算法基础

本篇内容主要涉及《算法导论》一书中的第二章知识,涉及的内容有插入排序和归并排序 插入排序对于插入排序有个很明显的显示生活例子来帮助我们理解,插入排序的工作原理就像打扑克牌一样,右手从桌面上拿起一张牌,...
  • Richie_ll
  • Richie_ll
  • 2017年05月05日 15:12
  • 336

读书笔记第一篇:知乎高赞回答

自从今年以来,生活发生了极大变化,自己也进入了30大关,开始奔四了。最近总觉得自己一事无成,无论物质还是精神上都没有得到满足,而且自己一个游戏程序员,越来越觉得逐渐被淘汰。所以想到的第一个挣扎的办法,...
  • u012175089
  • u012175089
  • 2016年04月16日 18:22
  • 2540

计算机专业读书笔记

专业读书知识点整理
  • u011625387
  • u011625387
  • 2017年06月11日 14:16
  • 430

java读书笔记

1.豆芽它长房高,它也是根菜! 2.要么就轰轰烈烈的活着。,要么就安安静静的死去! 3.程序员这一行有三个点在支撑,技术、管理(管理自己的时间和精力)、与人沟通。...
  • ljj2312
  • ljj2312
  • 2016年06月18日 19:22
  • 1875

Android开发艺术探索读书笔记(一)

首先向各位严重推荐主席这本书《Android开发艺术探索》。     再感谢主席邀请写这篇读书笔记 + 书评。书已经完整的翻完一遍了,但是还没有细致的品读并run代码,最近有时间正好系统的把整本书从内...
  • amurocrash
  • amurocrash
  • 2015年09月24日 18:34
  • 8175

Python读书笔记-第一章

1. python 2.2 版本之后直接处理长整数 比如>>>100000000000000       1000000000000L 2. 0xABCD 表示十六进制     01...
  • cq361106306
  • cq361106306
  • 2015年01月14日 16:02
  • 767

《算法》读书笔记(一)

第1章 基础 本书研究的是算法和数据结构,本章介绍的是学习算法和数据结构所需要的基本工具。它讲解了在随后的章节中用来实现、分析和比较算法的基本原则和方法,包括Java编程模型、数据抽象、基本数...
  • mpx_xb
  • mpx_xb
  • 2016年10月31日 18:06
  • 493
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读书笔记3
举报原因:
原因补充:

(最多只允许输入30个字)