大佬教程收集整理的这篇文章主要介绍了导致malloc()在CentOS上返回NULL,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我第一次试图让这件事发生失败,而且贝壳显示出“杀死”.这导致我发现了Linux OOM杀手.从那时起我就试图找出一系列神奇的咒语,这些咒语将导致我正在寻找的结果.显然我需要搞砸:
> /etc/sysctl.conf
> ulimit -m
> ulimit -v
> vm.overcommit_memory(显然应该设置为2,根据Oracle文章)
到目前为止,我得到“被杀”或分段错误,这两者都不是预期的结果.我被vm_overcommit_memory = 2“杀”的事实意味着我肯定不明白发生了什么.
如果有人能找到一种人工可靠地在CentOS上创建约束执行环境的方法,以便学生学习如何处理OOM(以及其他?)类错误,那么很多课程教师都会感谢你.
//在此处保存您的工作并记下您当前的overcommit_ratio值
# echo 2 > overcommit_memory # echo 1 > overcommit_ratio
这会将VM_OVERCOMMIT_MEMORY设置为2,表示不会过度使用overcommit_ratio,设置为1(即不会过度使用)
Null malloc演示
#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { void *page = 0; int index; void *pages[256]; index = 0; while(1) { page = malloc(1073741824); //1GB if(!pagE)break; pages[index] = page; ++index; if(index >= 256)break; } if(index >= 256) { printf("allocated 256 pages\n"); } else { printf("memory Failed at %d\n",indeX); } while(index > 0) { --index; free(pages[index]); } return 0; }
产量
$cat /proc/sys/vm/overcommit_memory 0 $cat /proc/sys/vm/overcommit_ratio 50 $./code/stackoverflow/test-memory allocated 256 pages $su # echo 2 > /proc/sys/vm/overcommit_memory # echo 1 > /proc/sys/vm/overcommit_ratio # exit exit $cat /proc/sys/vm/overcommit_memory 2 $cat /proc/sys/vm/overcommit_ratio 1 $./code/stackoverflow/test-memory memory Failed at 0
记得将你的overcommit_memory恢复为0和overcommit_ratio,如上所述
以上是大佬教程为你收集整理的导致malloc()在CentOS上返回NULL全部内容,希望文章能够帮你解决导致malloc()在CentOS上返回NULL所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。