永发信息网

C++中开辟大内存

答案:6  悬赏:70  手机版
解决时间 2021-04-06 04:30
C++中开辟大内存
最佳答案
NodeInfoBlock *p,*q; //创建空闲数据块链表的操作指针

//分配大内存块
char *pNodeInfoBlock=(char *)malloc(sizeof(NodeInfoBlock)*BlockCount);
//指向空闲内存块
MPoll->pNodeInfoFree=(NodeInfoBlock *)pNodeInfoBlock;

//将分配好的大内存块,按照具体的结构切割为小块,并形成空闲数据块链表
p=(NodeInfoBlock *)MPoll->pNodeInfoFree;
for (i=1;i {
q=((NodeInfoBlock *)MPoll->pNodeInfoFree+i);
p->next=q;
p=q;
}
q->next=NULL;

说明:
不管申请多大的内存,在物理内存分布上可能是不连续的,但对用户程序而言,虚拟地址一定都是连续的,连虚拟地址空间上都没有足够大的连续空间的话,分配就会失败。
全部回答
不明巨额里。追问????追答你的操作系统是几位的?不会是32位的吧??照理说,你的是16G内存,如果是64位,应该不会有这个限制才对。追问操作系统是 64位的,编译器也是用的X64啊......追答
我用vs2008 64位编译器,byte * long3g=new byte[3,000,000,000];,没有问题啊。。。。
8G也没问题啊,不信你看下图:
追问我用的是vs2010, 用new运算符开辟3G是可以的,但是3G以上就直接编译不过了....在网上找,别人说是在编译的时候vs用了 mixed compiler,不是用的native compiler,所以是这样....然后我用malloc是可以随便开辟内存的(当然是小于机子的配置啦).....
不管怎样....
谢谢你啦.....
malloc(1024*1024*1024*8)追问试过了,开辟不了啊......追答返回指针为空咯?!可能是有内存保护吧。。。追问是滴啊.......
所以要怎么搞才能开到至少3G的内存呢......追答这个真没有试过呢,不好意思呢,没什么参考建议。。。
另外VirtualAlloc的话,第三个参数需要注意,第一次开辟的时候,必须是MEM_COMMIT | MEM_RESERVE两个类型(API的阐述中有提及),否则不会分配成功。追问嗯嗯,谢谢啦....
c++和c的区别在哪啊?追问开辟内存的方法,c++多了new.....
的确直接用new就行
你试试
char *a = new char[1024ULL * 1024ULL * 1024ULL * 8ULL];
注意后面要带ULL代表无符号超长整型数值,否则会默认int导致溢出或符号问题追问谢谢老兄了啦.....
真的这样子就可以了....
不过也最多能申请3G,不然VS直接报错了.....
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
Mother: Bob is sure tonigh. Father: Don't
中国移动积分怎样获得,如何开通移动的积分业
拳打镇关西的主人公是,什么拳打镇关西
LOL赢一把10点输一把27点怎么办
单选题极坐标方程4ρ-3ρcosθ-5=0表示的曲线
方位介词中into的意思是什么?_?
高压锅压猪脚需要/压多少时间才能压好
用大小完全相同的200块正方形地砖,铺一间面
人最少的睡眠时间多少啊?
学姐好,想考中科院电工所的研究生,请问毕业
估算工程量经验,二次结构砌砖,抹灰
菜鸟驿站(重庆江岸丽水后门店)地址有知道的么
lol中单杰斯怎么打 ???
大学舍友,毕业四年平时也没有联系过,有几个
船舶主机油头拆装步骤
推荐资讯
根据短文内容和首字母提示,在下文空格处填入
窗外这篇散文的结尾用了什么手法
抓的野鸟 这是什么鸟
炉石传说无法成为法术伤害的随从有哪些
新人求解 扇子妈什么皮肤好看
如图所示为水平仪放置于某桌面上时的情形,则
冬笋怎么剥皮
tyt9800怎么样?
为什么冰箱的后壁发烫
27+()<56最大能填几
西塘汽车站有去嘉善火车南站的车吗
单选题下列各组酸酐与酸的对应关系中错误的是
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?