社区
C++ 语言
帖子详情
申请更多的内存????
nihaoabq
2010-04-20 09:54:46
我记得以前好象在哪里看到过,就是有个函数可以告诉系统我需要很多的内存,但是忘了是哪个函数了,有没有知道的.
...全文
148
19
打赏
收藏
申请更多的内存????
我记得以前好象在哪里看到过,就是有个函数可以告诉系统我需要很多的内存,但是忘了是哪个函数了,有没有知道的.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nihaoabq
2010-04-20
打赏
举报
回复
其实也不是需要那么大,因为我每次需申请要几K大小,并且不释放,当累计申请超过3万多个的时候就申请失败了,这时候在任务管理器中看程序使用的内存也就3百多M,
如果改为NEW的话没问题,但是我用的是一个现成的CBuffer类.不想在改了..
superhard_d
2010-04-20
打赏
举报
回复
每个应用程序分配4G的虚拟内存,其中系统占2G,2G给应用程序,楼主想申请多大?
icansaymyabc
2010-04-20
打赏
举报
回复
现在的系统好像直接申请就可以了,实在不行先插几颗内存条上去再申请。
vrace
2010-04-20
打赏
举报
回复
你用 VirtualAlloc 先不要直接就 MEM_COMMIT 了三
nihaoabq
2010-04-20
打赏
举报
回复
来人啊................
nihaoabq
2010-04-20
打赏
举报
回复
我用VirtualAlloc(NULL,nNewSize,MEM_COMMIT,PAGE_READWRITE);
申请的,真的会返回NULL哦...
而且我用任务管理器查看内存还是有很多的哦..
chenyu2202863
2010-04-20
打赏
举报
回复
当然,malloc参数是size_t类型的,也就是说不能一次超过4G
nihaoabq
2010-04-20
打赏
举报
回复
啊,,想想啊,我找了很长时间没找到...
chenyu2202863
2010-04-20
打赏
举报
回复
现在的机器都用了虚拟内存技术,不管你malloc多少,应该都不会返回失败!
ztenv
版主
2010-04-20
打赏
举报
回复
同样忘了,汗;
赵4老师
2010-04-20
打赏
举报
回复
[Quote=引用 17 楼 lthyxy 的回复:]
计算机组成原理→DOS命令→汇编语言→C语言、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言、架构……
[/Quote]
引用请注明出处。呵呵!(^_^)
nihaoabq
2010-04-20
打赏
举报
回复
[Quote=引用 16 楼 zhao4zhong1 的回复:]
引用 15 楼 nihaoabq 的回复:
引用 13 楼 zhao4zhong1 的回复:
用文件读/写模拟数组取/赋值,大小只受硬盘空间限制
_open
_lseeki64
_read
_write
_close
这到是一个方法,不过速度的话有点受限..
速度一点也不受限。
别忘了操作系统有读写缓冲区,还有读写Cache。
[/Quote]
哦了,就用这个办法.
liutengfeigo
2010-04-20
打赏
举报
回复
计算机组成原理→DOS命令→汇编语言→C语言、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言、架构……
赵4老师
2010-04-20
打赏
举报
回复
[Quote=引用 15 楼 nihaoabq 的回复:]
引用 13 楼 zhao4zhong1 的回复:
用文件读/写模拟数组取/赋值,大小只受硬盘空间限制
_open
_lseeki64
_read
_write
_close
这到是一个方法,不过速度的话有点受限..
[/Quote]
速度一点也不受限。
别忘了操作系统有读写缓冲区,还有读写Cache。
nihaoabq
2010-04-20
打赏
举报
回复
[Quote=引用 13 楼 zhao4zhong1 的回复:]
用文件读/写模拟数组取/赋值,大小只受硬盘空间限制
_open
_lseeki64
_read
_write
_close
[/Quote]
这到是一个方法,不过速度的话有点受限..
nihaoabq
2010-04-20
打赏
举报
回复
[Quote=引用 12 楼 inflexible_lin 的回复:]
引用 4 楼 chenyu2202863 的回复:
当然,malloc参数是size_t类型的,也就是说不能一次超过4G
还有什么realloc
[/Quote]
这到是一个方法,不过速度的话有点受限..
赵4老师
2010-04-20
打赏
举报
回复
用文件读/写模拟数组取/赋值,大小只受硬盘空间限制
_open
_lseeki64
_read
_write
_close
aleyn
2010-04-20
打赏
举报
回复
[Quote=引用 4 楼 chenyu2202863 的回复:]
当然,malloc参数是size_t类型的,也就是说不能一次超过4G
[/Quote]
还有什么realloc
chenyu2202863
2010-04-20
打赏
举报
回复
new是调用的malloc,而malloc在windows上是HeapAlloc,HeapAlloc也调用了VirtualAlloc
微信小程序项目实战(下拉刷新+加载
更
多)
1、微信小程序下拉刷新和上拉事件的需求和相关知识点讲解 2、微信小程下拉刷新的设计和开发 3、微信小程序加载
更
多的设计和开发
为android 应用
申请
更
多
内存
为android 应用
申请
更
多
内存
。
在 4G
内存
的机器上,
申请
8G
内存
会怎么样?
至此, 验证完成了。简单总结下:在 32 位操作系统,因为进程理论上最大能
申请
3 GB 大小的虚拟
内存
,所以直接
申请
8G
内存
,会
申请
失败,报错 Cannot allocate memory在 64位 位操作系统,因为进程理论上最大能
申请
128 TB 大小的虚拟
内存
,即使物理
内存
只有 4GB,
申请
8G
内存
也是没问题,因为
申请
的
内存
是虚拟
内存
。如果没有 Swap 分区,因为物理空间不够,进程会被操作系统杀掉,原因是 OOM(
内存
溢出);
malloc 是如何分配
内存
的?
大家好,我是小林。 很早之前写了一篇图解虚拟
内存
的文章:真棒!20 张图揭开
内存
管理的迷雾,瞬间豁然开朗 最近想多写一些
内存
管理的文章,这次我们就以 malloc 动态
内存
分配为切入点,我在文中也做了小实验: malloc 是如何分配
内存
的? malloc 分配的是物理
内存
吗? malloc(1) 会分配多大的
内存
? free 释放
内存
,会归还给操作系统吗? free() 函数只传入一个
内存
地址,为什么能知道要释放多大的
内存
? 发车! Linux 进程的
内存
分布长什么样? 在 Linux 操作系统中,
32位应用程序如何使用大于2GB的
内存
?
32位应用程序如何使用大于2GB的
内存
? 不管是在 32 位 Windows 还是在 64 位 Windows,32 位应用程序都只能使用最大 2GB 的
内存
,这是我们司空见惯的一个设定。但其实 Windows 提供了一些方法让我们打破这样的设定,使程序使用大于 2GB 的
内存
。 为什么 32 位程序只能使用最大 2GB
内存
? 32 位寻址空间只有 4GB 大小,于是 32 位应用程序(进程)最大只能用到 4GB 的
内存
。然而,除了应用程序本身要用
内存
,操作系统内核也需要使用。应用程序使用的
内存
空间
C++ 语言
64,641
社区成员
250,579
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章