一次分配超过2G的8g内存只有2g可用,怎么办

2014年8月 其他开发语言大版内专家分月排行榜第二2014年7月 其他开发语言大版内专家分月排行榜第二2014年5月 其他开发语言大版内专家分月排行榜第二2014年4月 其他开发语言大版内专家分月排行榜第二2014年3月 其他开发语言大版内专家分月排行榜第二2014年1月 其他开发语言大版内专家分月排行榜第二2013年12月 其他开发语言大版内专家分月排行榜第二2013年11月 其他开发语言大版内专家分月排行榜第二2013年3月 其他开发语言大版内专家分月排行榜第二2012年5月 其他开发语言大版内专家分月排行榜第二2012年4月 其他开发语言大版内专家分月排行榜第二2010年10月 其他开发语言大版内专家分月排行榜第二2010年9月 其他开发语言大版内专家分月排行榜第二
2013年9月 其他开发语言大版内专家分月排行榜第三2012年6月 其他开发语言大版内专家分月排行榜第三
2014年10月 C/C++大版内专家分月排行榜第三2014年4月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本帖子已过去太久远了,不再提供回复功能。后使用快捷导航没有帐号?
手机盒子客户端点击或扫描下载
Powered by新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 84, 距离下一级还需 116 积分
论坛徽章:0
如果32位程序,用malloc分配内存能否超过2G呢
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
白手起家, 积分 7, 距离下一级还需 193 积分
论坛徽章:0
PC 上,没啥希望——根本找不到那么大块的连续地址空间给你。。
白手起家, 积分 0, 距离下一级还需 200 积分
论坛徽章:0
你自己实验看行不性?
应该可以。
#include &stdio.h&
#include &stdlib.h&
main()
{
char *cp = 0;
size_t size = ((size_t)2)*24;
& &cp = malloc(size);
& &printf(&cp = %p\n&, cp);
}
复制代码
家境小康, 积分 1119, 距离下一级还需 881 积分
论坛徽章:0
原帖由 wolf0403 于
14:41 发表
PC 上,没啥希望——根本找不到那么大块的连续地址空间给你。。
我记得好像malloc分配的内存是在堆里面的。堆好像不是连续地址空间吧?而且现在的操作系统可以用虚拟内存的。所以我觉得可以。不知道我说错没有,请指教。
[ 本帖最后由 janusle 于
01:02 编辑 ]
白手起家, 积分 194, 距离下一级还需 6 积分
论坛徽章:0
我试过了,使用思一克的程序的时候
当分配1.8G的时候,可以分配.
但是2G就会分配失败.
我做了改动,可以分配2个1.35G的堆空间.
程序代码如下:
#include &stdio.h&
#include &stdlib.h&
char *cp = 0,*dp = 0;
size_t size = ((size_t)1)*24*1.35;
& &cp = malloc(size);
& &printf(&cp = %p\n&, cp);
& &dp = malloc(size);
& &printf(&cp = %p\n&, dp);
白手起家, 积分 0, 距离下一级还需 200 积分
论坛徽章:0
1) 1.35 等于 1
2) malloc 实际上“什么也没有分配”,只是分配了“将来分配物理内存的权利”
3)如果让程序真分配,可以在malloc返回指针后向cp中每隔4096字节写上一个字符。
白手起家, 积分 194, 距离下一级还需 6 积分
论坛徽章:0
#include &stdio.h&
#include &stdlib.h&
& && &&&char *cp = 0,*dp = 0;
& && &&&size_t size = ((size_t)1)*24*1.35;
& && &&&size_t size1 = ((size_t)1)*24;
& && &&&printf(&size = %d, size1 = %d\n&, size, size1);
& && &&&cp = malloc(size);
& && &&&printf(&cp = %p\n&, cp);
& && &&&dp = malloc(size);
& && &&&printf(&cp = %p\n&, dp);
& && &&&int i=0;
& && &&&while(i & size - 4096)
& && && && && & *cp = '\n';
& && && && && & *dp = '\n';
& && && && && & i += 4096;
& && && && && & cp += 4096;
& && && && && & dp += 4096;
[root@localhost ~]# ./bigmalloc
size = , size1 =
cp = 0xb2b5008.
具体的写字符没办法进行,一运行这个程序,我可怜的机器就要挂
白手起家, 积分 194, 距离下一级还需 6 积分
论坛徽章:0
正如思一克所说,真正的内存分配应该是在写内存的时候发生的.
我试图用bzero来初始化字符串,结果机器就受不了了,而仅仅malloc则没有任何反应.
白手起家, 积分 184, 距离下一级还需 16 积分
论坛徽章:0
小富即安, 积分 2221, 距离下一级还需 2779 积分
论坛徽章:0
windows平台下测试,最多可分配 1925MB内存
测试程序如下:
#include &stdio.h&
#include &stdlib.h&
#include &windows.h&
int main(int argc, char* argv[])
{
& & & & int memInMB;
& & & & char *tS
& & & & if(argc != 2)
& & & & {
& & & & & & & & fprintf(stdout, &Usage: %s memInMB\n&, argv[0]);
& & & & & & & & return (-100);
& & & & }
& & & & tString = NULL;
& & & & memInMB = atoi(argv[1]);
& & & & tString = (char *)malloc(sizeof(char)**memInMB);
& & & & fprintf(stdout, &Holding memory %d MB \n&, memInMB);
& & & & Sleep(20*1000);
& & & &
& & & & if(tString != NULL)
& & & & {
& & & & & & & & fprintf(stdout, &Get ready for freeing memory\n&);
& & & & & & & & free(tString);
& & & & & & & & tString = NULL;
& & & & }
& & & &
& & & & if(tString == NULL)
& & & & {
& & & & & & & & fprintf(stdout, &Memory freed\n&);
& & & & & & & & return (0);
& & & & }
& & & & else
& & & & & & & & return(-100);
& & & &
}
复制代码
测试环境:
4GB RAM, 3GHz CPU, Windows 2003 X64
[ 本帖最后由 wuqing 于
13:29 编辑 ]}

我要回帖

更多关于 2g内存 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信