社区
非技术类
帖子详情
看完了Windows核心编程,有几个问题不是很理解,望高人指点
大脚板
2003-08-18 09:37:29
进程中的地址都是虚拟地址,物理存储器中的真实地址又是如何表示的呢
在多个线程同时访问一个函数,函数中的局部变量又是如何处理的
不甚感激
...全文
16
12
打赏
收藏
看完了Windows核心编程,有几个问题不是很理解,望高人指点
进程中的地址都是虚拟地址,物理存储器中的真实地址又是如何表示的呢 在多个线程同时访问一个函数,函数中的局部变量又是如何处理的 不甚感激
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LocalVar
2003-08-21
打赏
举报
回复
执行一个函数将它的局部变量都拷贝到堆栈,执行另一个函数又将它的局部变量都拷贝入堆栈。
注意:不是拷贝,拷贝的开销太大了,实际做法是通过指针改变指向来切换堆栈,而这个指针用的是寄存器,所以速度很快
大脚板
2003-08-21
打赏
举报
回复
如茅塞顿开,非常感谢各位
sandrowjw
2003-08-21
打赏
举报
回复
执行一个函数将它的局部变量都拷贝到堆栈,执行另一个函数又将它的局部变量都拷贝入堆栈。
就是这样的,每次调用函数都要在堆栈中开辟一块空间存放所有的局部变量和临时变量,这块空间叫一个stack frame(对于象c++这样的语言,这块空间是可增长的)。所以对于局部变量,根本不存在访问冲突问题。
mfc168
2003-08-21
打赏
举报
回复
全局变量在预编译的时候就已经分配了物理地址空间,局部变量是使用堆栈,分配时PUSH,函数结束后,pop
大脚板
2003-08-21
打赏
举报
回复
to LocalVar(分乃身外之物,即使我回答对了,也别给分)
windows核心编程里讲堆栈的那一章,好象只提到了,对于c++运行期库的全局变量的处理,并没有局部变量的,两者应该有很大的不同
大脚板
2003-08-21
打赏
举报
回复
执行一个函数将它的局部变量都拷贝到堆栈,执行另一个函数又将它的局部变量都拷贝入堆栈吗??总觉的不是很能理解
flybird66
2003-08-21
打赏
举报
回复
问题:进程中的地址都是虚拟地址,物理存储器中的真实地址又是如何表示的呢
一般来说不会给你真实的地址的,原因:系统在分配内存是按一定的方法来分配的,并不是说你指定用哪段内存就让你用哪段内存,如果这样的话,很容易引起系统崩溃的。
问题:在多个线程同时访问一个函数,函数中的局部变量又是如何处理的
在调用函数时,系统自动分配一段内存空间来存放你局部函数的数据,局部函数用完之后就会把这段内存空间释放掉,但它不是将原有的内存清零,所以很多时候你再多次调用局部函数时它会记录上次操作的结果。
另外在同一时间内只有一个线程访问内存,因一个线程访问内存时,它就会把这段内存锁住,用完之后才会释放掉
LocalVar
2003-08-21
打赏
举报
回复
不是函数的拷贝,是局部变量的拷贝。
你说的队,对于x86系统来说,ebp, esp等寄存器用来指示堆栈,线程切换时,这些寄存器的内容就会改变从而指向正确的内存区
大脚板
2003-08-21
打赏
举报
回复
是不是每个线程的堆栈里都有函数的拷贝
比如 void f(){int i=0;i=10;}
两个线程在执行f()时,i的地址应该是不同的喽,系统是如何进行i地址的切换的
xiaohedou
2003-08-18
打赏
举报
回复
我想MS总是把一些东西隐藏起来,使得一些概念理解的不清,比如句柄的事。进程中的地址都是虚拟地址应该与操作系统的调度有关,是个调度地址。多个线程同时访问一个函数,好象不可能。记得书里说大约20ms操作系统给进程一次机会去执行任务,所以线程也是串行化了的。第7章线程的调度、优先级和亲缘性。
sandrowjw
2003-08-18
打赏
举报
回复
第一个问题:查页表
第二个问题:如楼上所言
LocalVar
2003-08-18
打赏
举报
回复
第一个问题:解释起来太麻烦,一般操作系统原理的书上都会或多或少的提到。
第二个问题:局部变量不会冲突,因为每个县城都有自己独立的栈空间(默认为1M),局部变量是在栈中的,这一点在该书上讲到了,不过在哪章我既不太轻了
[转]如何学好
windows
c++
编程
学习精髓(收集,整理)
以下是很多VC爱好者的学习经历,希望对大家有所帮助:我记得我在网上是这么说的:先学win32的SDK,也就是API,再学MFC,这么一来呢,就先有个基础,MFC是API的封装,如果API用的熟了,MFC上手就轻松的多了。我觉得呢,现在不少
WINDOWS
编程
入门的好书很多,多买一些,多看看,多想想。不要心浮气躁。我的经验就是一边看书,一边写程序,看看是不是书上说的那样。看书看明白了...
如何学好
windows
c++
编程
学习精髓(收集,整理)
以下是很多VC爱好者的学习经历,希望对大家有所帮助: 我记得我在网上是这么说的:先学win32的SDK,也就是API, 再学MFC,这么一来呢,就先有个基础,MFC是API的封装, 如果API用的熟了,MFC上手就轻松的多了。 我觉得呢,现在不少
WINDOWS
编程
入门的好书很多,多买一些,多看看,多想想。不要心浮气躁。我的经验就是一边看书,一边写程序,看看是不是书上说的那样。看书看明白了不行,自己...
来自豆瓣的一个走过弯路的人(转)
首先得声明我这篇文章只有很少的篇幅介绍龙书,其实我是想写点东西给那些看
完
龙书的人。这是我接触3D图形
编程
的第一本书,接触3d图形
编程
前,我看的是《
Windows
游戏
编程
大师技巧》,只看了前几章,当时我急着想去学3D的酷玩意儿,立刻就没耐心看GDI,DirectDraw。转投Direct3D门下,入门书当然是这本龙书了。对我来说龙书最棒的地方在于,它除了开始的数学基础章节外,每一章都能...
[《
编程
高手箴言》读后感]
[《
编程
高手箴言》读后感] 毕业也有几年了,也看了和学了不少东西,《
编程
高手箴言》读后感。有时也想写点什么,但总是觉得头绪很多,一直没有动笔。最近翻了翻梁先生的《
编程
高手箴言》,突然想写点什么,权且用读书笔记的形式写点东西。 等号上面的摘字《箴言》,下面则是笔者自己的感想。希望大家指教,但是谩骂就不必了,谢谢。注:这一部分涉及《箴言》第一章。 在PC这个领域,现在的程序已不等于软件了。
编程
高手箴言》读后 #2
毕业也有几年了,也看了和学了不少东西。有时也想写点什么,但总是觉得头绪很多,一直没有动笔。最近翻了翻梁先生的《
编程
高手箴言》,突然想写点什么,权且用读书笔记的形式写点东西。等号上面的摘字《箴言》,下面则是笔者自己的感想。希望大家指教,但是谩骂就不必了,谢谢。注:这一部分涉及《箴言》第二章。 CPU是计算机的心脏,是控制程序的
核心
。只有真正了解了CPU的结构和运行机理,才能真正编出优秀的程序
非技术类
1,649
社区成员
58,980
社区内容
发帖
与我相关
我的任务
非技术类
VC/MFC 非技术类
复制链接
扫一扫
分享
社区描述
VC/MFC 非技术类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章