首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

如何绕过操作系统对内存的限制

2012-10-23 
怎么绕过操作系统对内存的限制用c写一个死循环,但是内存上到一定的限度就不会上去了,被限制了怎么去绕过这

怎么绕过操作系统对内存的限制
用c写一个死循环,但是内存上到一定的限度就不会上去了,被限制了 怎么去绕过这个呢
求大牛指点

[解决办法]
使用malloc/new
这样可以得到更多的空间,可以申请比在栈上的空间多得多
[解决办法]
那个提示的是物理内存,这个是不能突破的,因为Windows的内存管理中决定了有些东西是不能交换到页面文件的,也有一些没有分页的页面。比如内核、页表、I/O缓冲之类的。所以你想完全占用所有物理内存是不可能的,否则Windows就无法正常工作了。
另外32位的Windows,每个进程的虚拟地址空间是4GB,但是只有2GB给用户进程,另外的是给内核保留的。一般情况下,你malloc可以到1.5GB~1.75GB。因为你的可执行空间里还有一些默认dll、C库、代码段之类的别的东西。如果你只有1GB的物理内存,这个物理内存肯定是不可能全给你用的,多出去的部分必然要交换到硬盘上的交换文件里。虽然的确有些方法可以强迫征用物理内存,但是多了以后系统就不能正常工作了。

热点排行