windows不是动态分配内存的么,一个对象的句柄在程序运行过程中是不变的,但对象的地址应是会变的,对吧,但我用如下方法发现好象不会变

zyq654321 2001-12-20 11:00:30
设计一个按钮,加入
CString s1;
s1.format("%d,%d",AfxGetApp(),this);
MessageBox(s1);
然后运行,不管怎么样运行,显示s1不变
...全文
247 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyq654321 2002-01-01
  • 打赏
  • 举报
回复
DoItFreely(Freely) ,你在哪?我想你啊!^o^
这么说指针是很不安全的,那我们在编程时要注意哪些情况不用指针呢,


zyq654321 2001-12-29
  • 打赏
  • 举报
回复
DoItFreely(Freely) ,你在哪?我想你啊!^o^
这么说指针是很不安全的,那我们在编程时要注意哪些情况不用指针呢,


linjiework 2001-12-27
  • 打赏
  • 举报
回复
我想咱们平常编程时用到的指针不是真正意义上的指针,它应该也是逻辑地址,不是实际地址。
而DoItFreely(Freely)说的指针是指真正意义上的指针,它指向的是实际地址。
zyq654321 2001-12-27
  • 打赏
  • 举报
回复
DoItFreely(Freely) ,你在哪?我想你啊!^o^
这么说指针是很不安全的,那我们在编程时要注意哪些情况不用指针呢,


zyq654321 2001-12-27
  • 打赏
  • 举报
回复
DoItFreely(Freely) ,你在哪?我想你啊!^o^
这么么指针是很不安全的,那我们在编程时要注意哪些情况不用指针呢,
zyq654321 2001-12-27
  • 打赏
  • 举报
回复
DoItFreely(Freely) ,你在哪?我想你啊!^o^
这么说指针是很不安全的,那我们在编程时要注意哪些情况不用指针呢,


iconlee 2001-12-24
  • 打赏
  • 举报
回复
gz
zyq654321 2001-12-24
  • 打赏
  • 举报
回复
DoItFreely(Freely)看来对操作系统和vc有非常深入的理解,真羡慕你啊。
不过我还是有些不明白,1。win32从不在内存里移动数据或者代码,我不是很明白,windows不是动态地管理内存的么,为了充分利用内存,经常要把内存里移动数据或者代码移来移去。
2要是程序直接使用指针,则可能不能恰当地处理异常,我们不是经常要直接用指针么,
3地址会触发异常,但操纵句柄最后我想也还是要转化为操纵指针,如果有问题还不是一样?
我对操作系统的内存管理的确是一知半解,不好意思
zyq654321 2001-12-22
  • 打赏
  • 举报
回复
虚拟地址也要变,否则为什么还要一个句柄的东西,
DoItFreely 2001-12-22
  • 打赏
  • 举报
回复
win32从不在内存里移动数据或者代码。被交换出去的东西再加载进来时物理地址很可能不同了,但是影射到程序逻辑地址空间的相同位置,所以,指针也不变。由于数据可能被交换出去了,访问这个地址会触发异常,Windows通过检查内存描述符可以确定缺页,并触发缺页中断,重新调入不在内存的数据,要是程序直接使用指针,则可能不能恰当地处理异常(如此时不能响应缺页中断),所以windows核心不希望我们直接操纵这样的内存块。那怎么操纵呢?当然就是描述符在...表里的序号啊 - 句柄!
zyq654321 2001-12-22
  • 打赏
  • 举报
回复
虚拟地址也要变,否则为什么还要一个句柄的东西,
zyq654321 2001-12-21
  • 打赏
  • 举报
回复
,hProcess是固定的这我知道,但AfxGetApp()不是句柄啊,this也不是句柄吧,我的意思是AfxGetApp()和this在程序运行过程中会变,但实际好象没变

yongdu 2001-12-21
  • 打赏
  • 举报
回复
应该说的是逻辑地址吧,物理地址你没用
一个对象的句柄在程序运行过程中是不变的,但对象的地址应是会变的 应是对的
而s1的地址是在线程堆栈中分配的,在其前面加上char aa[100]它的使线程堆栈地址变它就变了,是s1.format("%d,%d",AfxGetApp(),&s1);





xiaoyunet 2001-12-21
  • 打赏
  • 举报
回复
windows 创建程序实例时分配的是虚拟地址空间,虽然物理内存地址在变,但windows保障虚拟地址是不便的,你想象如过虚拟地址也在变,windows不忙的一他糊涂
sohucsdnvc 2001-12-21
  • 打赏
  • 举报
回复
这个问题要问比尔盖子
CryingCat 2001-12-20
  • 打赏
  • 举报
回复
鸟人,知道我是谁吗?看看我的邮箱:yuhuang_huang@263.net
有事,email~~
zyq654321 2001-12-20
  • 打赏
  • 举报
回复
逻辑地址也要变,物理地址我不管它
Kummer 2001-12-20
  • 打赏
  • 举报
回复
你这样取得是逻辑地址还是物理地址,你有没有想过
zyq654321 2001-12-20
  • 打赏
  • 举报
回复
,hProcess是固定的这我知道,但AfxGetApp()不是句柄啊,this也不是句柄吧,我的意思是AfxGetApp()和this在程序运行过程中会变,但实际好象没变
SmallPigII 2001-12-20
  • 打赏
  • 举报
回复
你永远也取不到物理地址
加载更多回复(5)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧