能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
[求助]Sleep函数
下面是输出结果前面一部分:
14056750
14056750
14056750
14056765
14056765
14056765
14056765
14056765
14056765
14056765
14056765
14056781
14056781
14056781
14056781
14056781
14056781
14056781
14056781
14056796
14056796
14056796
14056796
14056796
14056796
14056796
14056796
.......
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
[求助]exe运行时,整个文件都加载到内存里吗?
刚才碰巧查到这些东西:
一.执行程序
当创建一个线程时,
1.系统只是保留了足够大的对应的.exe文件区域,将.exe文件本身作为物理内存,执行映射,却并未提交;
2.访问.exe文件的部分区域,以确定依赖的.dll(这将导致部分页面被提交);
3.依次LoadLirary(像为.exe保留区域一样,也为.dll保留区域,并有些类似第4步);
4.执行.exe的启动代码,并持续执行(执行到哪就提交哪块).
二.程序运行时修改全局变量或自修改代码
同一个程序可能运行多个实例,而每个进程都把原始文件当作物理内存看待,那么其中一个进程修改了某部分数据或代码,其他进程是否也被改动了呢?答案是否定的。由于Copy-On-Write的干预,每当一个进程试图修改全局变量(或代码)时,都会把这个变量所在的页重新拷贝一份,并把虚拟地址映射到这个拷贝上,此时怎么改都只是改动单独为此进程准备的副本,而不会影响其他进程。
但我还有个地方不明白:
在加载资源的时候为什么在LoadResource后还要LockResource?如果是都在内存映射文件里的话,LockResource是不是就没有必要调用了?
|
能力值:
( LV2,RANK:10 )
|
-
-
[求助]请教C++结构体内存对齐问题
谢谢楼上的回答。但是不太清楚为什么要这么做。按4的倍数对齐可以理解,在读这个数的时候只要访问一次内存就可以,但是为什么要按8的倍数来对齐?难道用的可以放8个字节的寄存器?或者别的什么原因?
谢谢啦!
|
能力值:
( LV2,RANK:10 )
|
-
-
|