鱼C论坛

 找回密码
 立即注册
查看: 5987|回复: 17

关于内存分配的问题??求解

[复制链接]
发表于 2012-9-30 00:59:33 | 显示全部楼层
首先,对已PE文件中的那两个字段,我给你解释一下啊。那两个字段没有任何作用,我可以写程序把一个exe文件的那两个字段全部填0,这个exe还可以正常执行,至于为什么要提供,那么这是微软的工程师的问题。但是那两个字段没有任何实际参考价值。

另外一个问题,我用VirtualAlloc函数和 malloc函数都试过了 ,申请1G内存完全可以申请成功,但是申请2G的时候,就不行了。不晓得是我电脑问题,还是你电脑问题。

另外我声明一点,你在申请内存的时候申请的是虚拟内存,跟物理内存没有关系,你有时候假如申请了一个G的内存,这并不意味着物理内存就给你腾出了1G的空间,你申请完以后,写数据进去的时候,操作系统才会把虚拟内存隐射到物理内存。

对于这个申请内存问题,我估计是楼主你操作失误,因为申请内存最终调用的API函数,VirtualAlloc, 这个函数会调用ZwVirtualMemory函数吧,貌似是这个名字,这个是0内核函数了,然后这个函数会调用一个中断,int 0x2E  去申请内存,我说这些的意思呢是,申请内存的函数是windows的开发者写的,人家再傻B 也肯定要写个if语句判断一下,你传进来的那个参数有没有超过一个界限,可以是4GB 也可以是2GB。虚拟内存总共就4GB,也就是CPU的寻址能力只能波及4GB,你申请了1TB  ,你能用吗?怎么写数据进去?怎么访问?

所以这个问题没有必要去争论,随便想想就明白了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-30 01:04:31 | 显示全部楼层
代码这样写,  LPVOID Buffer = malloc(1024 * 1024 * 1024 * 4)   
                    if(Buffer)  MessageBox(NULL , "Success" , " oo" , 0);

若是弹出这个框了  截图给我看下。  malloc函数内部也是调用API函数VirtualAlloc函数实现的,同一个东西啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-1 07:18:25 | 显示全部楼层
你那边的截图我看了,然后那边我也回复你了,再麻烦你一点,在你的系统根目录:
C:\windows\system32\ntoskrnl.exe      找到这个文件,复制一份,压缩一下上传到附件,我完了分析一下。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-21 03:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表