怎么绕过操作系统对内存的限制

野路子Tan 2012-09-08 02:26:31
用c写一个死循环,但是内存上到一定的限度就不会上去了,被限制了 怎么去绕过这个呢
求大牛指点
...全文
321 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Meteorlet 2012-09-11
  • 打赏
  • 举报
回复
不知道楼主想干什么
苏客达 2012-09-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 4 楼 的回复:

你电脑的内存条就是限制啊,1G还是2G有区别啊

程序都跑在虚拟内存,全部在物理内存,不受物理内存的限制
一米的火车道能让火车跑100万公里
[/Quote]
请问如何跑在虚拟内存,很好奇
Athenacle_ 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
决定字长的主要是CPU和操作系统,而且85%这个结论又是如何得来……
[/Quote]

85%大概是实测而来,但是没有意义,这跟整个OS的运行情况有关。

CPU 100% 其实很简单,死循环自增就行了
内存么,,OS会保护着的
野路子Tan 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

《深入解析Windows操作系统-Windows Internals》内存管理
[/Quote]
这个有电子版的吗
fengzhiquxiang1 2012-09-10
  • 打赏
  • 举报
回复
有点意思
赵4老师 2012-09-10
  • 打赏
  • 举报
回复
《深入解析Windows操作系统-Windows Internals》内存管理
CandPointer 2012-09-10
  • 打赏
  • 举报
回复

32位4G,这个...

win 2000 时代。 就有支持 >4GB 的32位win 2000 xxx
16位8088处理器, 可 2^20 = 1MB 内存,也就是 比尔盖茨的640KB内存

这些常识,难道没有启发你,CPU的位数, 并不决定最大的内存支持数?





VirtualAlloc
VirtualAllocEx
AllocateUserPhysicalPages
..
suixinpiaodang 2012-09-09
  • 打赏
  • 举报
回复
我在ubuntu上内存占用到80.5%就上不去了,,学习了。
辰岡墨竹 2012-09-08
  • 打赏
  • 举报
回复
那个提示的是物理内存,这个是不能突破的,因为Windows的内存管理中决定了有些东西是不能交换到页面文件的,也有一些没有分页的页面。比如内核、页表、I/O缓冲之类的。所以你想完全占用所有物理内存是不可能的,否则Windows就无法正常工作了。
另外32位的Windows,每个进程的虚拟地址空间是4GB,但是只有2GB给用户进程,另外的是给内核保留的。一般情况下,你malloc可以到1.5GB~1.75GB。因为你的可执行空间里还有一些默认dll、C库、代码段之类的别的东西。如果你只有1GB的物理内存,这个物理内存肯定是不可能全给你用的,多出去的部分必然要交换到硬盘上的交换文件里。虽然的确有些方法可以强迫征用物理内存,但是多了以后系统就不能正常工作了。
野路子Tan 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
我说的是哪个内存占有率任务管理器的那个
jackyjkchen 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
引用 8 楼 的回复:

能不能写一个程序,让电脑的内存占有率100%,我的系统是win7的 4g内存 我用while(1)循环,循环内容是int*p=(int *)malloc(1000);
但是到了85%内存就上不去了,我问人家说“malloc函数申请的是堆上空闲内存,堆的是由操作系统分配”,操作系统对其进行了限制,怎么突破这个限制呢


(1)自己找块主板,最好是64位的,这样对……
[/Quote]

决定字长的主要是CPU和操作系统,而且85%这个结论又是如何得来……
wqkjj 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

能不能写一个程序,让电脑的内存占有率100%,我的系统是win7的 4g内存 我用while(1)循环,循环内容是int*p=(int *)malloc(1000);
但是到了85%内存就上不去了,我问人家说“malloc函数申请的是堆上空闲内存,堆的是由操作系统分配”,操作系统对其进行了限制,怎么突破这个限制呢
[/Quote]

(1)自己找块主板,最好是64位的,这样对目前而言可以提供足够大的内存地址空间。32位的到4G就撑死了。
(2)自己写操作系统,你想怎么分就怎么分。

如果做不到,还是得服从OS的安排。

但是到了85%内存就上不去了
------------------------------
不止你的进程需要内存开销,系统总得有点周转的空间。
taodm 2012-09-08
  • 打赏
  • 举报
回复
楼主你想干嘛?
准备在家里的电脑上ctrl——c,然后到公司的电脑上ctrl_v?
野路子Tan 2012-09-08
  • 打赏
  • 举报
回复
能不能写一个程序,让电脑的内存占有率100%,我的系统是win7的 4g内存 我用while(1)循环,循环内容是int*p=(int *)malloc(1000);
但是到了85%内存就上不去了,我问人家说“malloc函数申请的是堆上空闲内存,堆的是由操作系统分配”,操作系统对其进行了限制,怎么突破这个限制呢
羽飞 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

你电脑的内存条就是限制啊,1G还是2G有区别啊
[/Quote]
程序都跑在虚拟内存,全部在物理内存,不受物理内存的限制
一米的火车道能让火车跑100万公里
Gloveing 2012-09-08
  • 打赏
  • 举报
回复
使用malloc/new
这样可以得到更多的空间,可以申请比在栈上的空间多得多
AnYidan 2012-09-08
  • 打赏
  • 举报
回复
电脑的优点是不会忘记,所以会有容量的问题。

人脑的缺点是会忘记,所以不会有容量的问题。
AndyZhang 2012-09-08
  • 打赏
  • 举报
回复
你电脑的内存条就是限制啊,1G还是2G有区别啊
野路子Tan 2012-09-08
  • 打赏
  • 举报
回复
那就是不可能?
自由建客 2012-09-08
  • 打赏
  • 举报
回复
你以为是买房,可以贷款呀!
加载更多回复(1)

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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