相关疑难解决方法(0)

如何获得可用的内存C++/g ++?

我想根据可用的内存分配我的缓冲区.这样,当我进行处理和内存使用量增加时,仍然保持可用的内存限制.有没有办法获得可用的内存(我不知道虚拟或物理内存状态会有什么不同?).方法必须是平台独立的,因为它将用于Windows,OS X,Linux和AIX.(如果可能的话,我还想为我的应用程序分配一些可用的内存,在执行期间它没有改变的人).

编辑:我用可配置的内存分配做到了.我理解这不是一个好主意,因为大多数操作系统为我们管理内存,但我的应用程序是一个ETL框架(打算在服务器上使用,但也在桌面上用作Adobe indesign的插件).因此,我正在运行以发布因为而不是使用交换,Windows将返回错误的alloc,其他应用程序开始失败.当我被教导避免崩溃等等时,只是试图优雅地降级.

c++ memory-management cross-platform

61
推荐指数
6
解决办法
9万
查看次数

malloc可以分配的最大内存

我试图在我的机器(1 Gb RAM 160 Gb HD Windows平台)上计算出最大程度上可以使用多少内存.

我读到malloc可以分配的最大内存仅限于物理内存(堆上).

此外,当程序超过内存消耗到某个级别时,计算机将停止工作,因为其他应用程序无法获得所需的足够内存.

所以要确认一下,我在C写了一个小程序:

int main(){  
    int *p;
    while(1){
        p=(int *)malloc(4);
        if(!p)break;
    }   
}
Run Code Online (Sandbox Code Playgroud)

我希望有一段时间内存分配失败并且循环会中断,但是我的计算机挂起,因为它是一个无限循环.

我等了大约一个小时,最后我不得不强行关闭电脑.

一些问题:

  • malloc是否也从HD分配内存?
  • 上述行为的原因是什么?
  • 为什么在任何时候都没有循环中断?
  • 为什么没有分配失败?

c malloc operating-system memory-management computer-architecture

44
推荐指数
5
解决办法
8万
查看次数