返回信息流程序malloc申请内存的时候,返回空指针了,该怎么办呢?
初步确认是申请过多。
也想过把一些变量里的数据存到txt文件里,需要的时候再读,
可是程序的时间复杂度很高,是遍历搜索那种,发现print,fprint这种操作太耗时间,
所以有些后面会用到的值就存在内存里。
结果,就这样了。
求教大牛,这个malloc的极限真的不能扩展吗?
程序里是一次性申请了100个该变量的空间,先用着,然后不够再申请100个这样。和每次申请的大小有关吗?
这是一条镜像帖。来源:北邮人论坛 / cpp / #90658同步于 2016/3/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]申请内存一直到返回空指针了
CrystalXIAO
2016/3/22镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
你申请了几个G的内存?
【 在 CrystalXIAO 的大作中提到: 】
: 程序malloc申请内存的时候,返回空指针了,该怎么办呢?
: 初步确认是申请过多。
: 也想过把一些变量里的数据存到txt文件里,需要的时候再读,
: ...................
我统计了下,有三种,第一种malloc 19561次,第二种 malloc 260082次,第三种170740次。每次的空间分别是6400,2800,7600个字节。
算了一下,一共是2G左右,真的到极限了吗?
【 在 nuanyangyang 的大作中提到: 】
: 在malloc返回NULL之前,你的程序malloc了多少次?每次分配多大的空间?一共分配了多大的空间?
这个和设备有关系吗,我的计算机是8G内存,64位系统。
【 在 nuanyangyang 的大作中提到: 】
: 在malloc返回NULL之前,你的程序malloc了多少次?每次分配多大的空间?一共分配了多大的空间?
【 在 CrystalXIAO 的大作中提到: 】
: 这个和设备有关系吗,我的计算机是8G内存,64位系统。
有关。有可能内存已经用完了。
分配内存的时候,分配器需要维护一些元数据来组织内存的结构,以便于管理和释放。而malloc是个通用的内存分配器,所以空间和时间效率并不一定是完美的。有可能malloc真的不适合这么大的分配压力。
试试用jemalloc,以高效出名。http://www.canonware.com/jemalloc/
把程序编译成64位的可能可以解决你这个问题
btw,和你计算机的物理内存大小没啥关系
【 在 CrystalXIAO 的大作中提到: 】
: 算了一下,是2G