malloc分配内存返回null,该如何处理

malloc分配内存返回null
一个关于地图的项目, 要读取好多数据文件, 每个文件大小都是上百兆, 总共加起来差不多有5G.
刚开始加载几个文件都没问题, 加载到一个400多M的文件时跳出错误了. 跟踪了一下是malloc返回了null.
不知道是不是malloc分配内存的极限了. 我的电脑是8G内存, 64位Win7, 在网上看了一个virtualalloc()函数说是可以分配虚拟内存比malloc分配的大, 但是我用了依然返回null.
求分配大内存的方法(╥﹏╥)

------解决方案--------------------
推荐楼主是用文件内存映射。
CreateFile()
CreateFileMapping()
MapViewOfFile()
UnmapViewOfFile()

大文件就靠它了。。附带说一句malloc内部实现就是VirtualAlloc。
还有就是文件内存映射就是OS加载EXE的方式,你看看好1G的exe安装文件,OS运行起来也毫不费力。
------解决方案--------------------
内存文件映射CreateFileMapping
------解决方案--------------------
是32位还是64位的exe?
64位的分配5G还是很轻松的
------解决方案--------------------
堆一般使用于分配少量的字节,大量一点的可以考虑使用虚拟内存,但是32位进程虚拟地址空间也就4G,其中能让你用的也就2G左右,这种情况貌似只能使用内存映射文件