免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1558 | 回复: 1

[C++] 求教一个内存分配的问题 [复制链接]

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-03-13 15:26:06CU大牛徽章
日期:2013-03-13 15:26:47
发表于 2013-06-07 15:51 |显示全部楼层
今天遇到一个分配内存失败的现象,百思不得其解,向各位大神求教。
  1. struct sysinfo info;
  2.         sysinfo(&info);
  3.         printf("uptime:%d totalram:%d freeram:%d sharedram:%d bufferram:%d totalswap:%d freeswap:%d procs:%d %s@%d" CRLF,info.uptime,info.totalram,info.freeram,
  4.                         info.sharedram,info.bufferram,info.totalswap,info.freeswap,info.procs,__FILE__,__LINE__);
  5. int AllocMem(char **pBuf,int nSize)
  6. {
  7.     char *p = 0;
  8.     try
  9.     {
  10.         errno = 0;
  11.         p = new char [nSize];   
  12.     }
  13.     catch(...)
  14.     {
  15.         printf("errno:%d p:%p\n",errno,p);
  16.         printf("alloc memory failed:%s size:%d %s@%d",strerror(errno),nSize,__FILE__,__LINE__);  
  17.         return HT_FAIL;
  18.     }   
  19.     memset(p,0,nSize);
  20.     *pBuf = p;
  21.     return HT_SUCCESS;
  22. }
复制代码
输出信息:
uptime:930 totalram:1955880960 freeram:651948032 sharedram:0 bufferram:27688960 totalswap:2097143808 freeswap:2097143808 procs:407 analysis/analysis.cpp@337
errno:12 pnil)
alloc memory failed:Cannot allocate memory size:6221120 analysis/analysis.cpp@86

不明白为什么还有650M左右的可用内存,却分配不出6M左右的空间。 难不成650M都是小于6M的碎片,感觉可能性不大。  第三次调用AllocMem时候分配失败,sysinfo函数在AllocMem前调用,来查看系统内存情况。

论坛徽章:
0
发表于 2013-06-08 17:49 |显示全部楼层
errno 12表示啥意思?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP