当前位置:  开发笔记 > 运维 > 正文

有没有办法找出在c中使用malloc时可用的最大字节数是多少?

如何解决《有没有办法找出在c中使用malloc时可用的最大字节数是多少?》经验,为你挑选了2个好方法。

或者你只需​​要这样做并检查errno和/或指针,看看你是否成功了?



1> JaredPar..:

您是否在调用malloc之前询问是否可以找到可用的字节数?

如果是这样,答案是否定的.即使你可以,答案可能对你没有多大价值.之所以是你永远无法知道多少内存可用,你只能知道多少内存可用的.这是一个非常重要的区别,因为它会影响您正确使用API​​的方式.

例如,假设有一个名为available_memory的函数.这段代码看起来很正确,但却被严重破坏了

size_t size = GetSizeToAllocate();
if ( size < available_memory() ) {
  // No need to check the answer because there is enough memory
  SomeType* p = malloc(size);
}

原因是其他一些线程可能介于if语句和malloc语句之间并且自己进行分配.这可以减少系统中的总体内存,从而改变available_memory的回报.

更糟糕的是系统中可用的内存量并不能决定可以用malloc分配多少内存.对malloc(以及任何其他内存分配操作)重要的是可用的连续内存量.



2> qrdl..:

尝试不一定有帮助,因为一些操作系统(如Linux)使用乐观的内存分配策略 - 即使你从malloc()它获得非NULL结果并不意味着你的服务请求内存.

更多这里

似乎没有办法做到这一点.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有