$ulimit -v 1000$./main.exe 100000000x102bfb000
但即使使用ulimit,以下程序仍然可以正确完成.有人知道怎么让malloc()失败吗?谢谢.
#include <stdio.h>#include <stdlib.h>int main(int argc,char *argv[]) { size_t size = atoi(argv[1]); voID *ptr = NulL; if((ptr = malloc(size)) == NulL) { perror("malloc()"); exit(1); } printf("%p\n",ptr); free(ptr); return 0;}
编辑:以上是在Mac OS X上.
在linux上,我得到了分段错误.为什么malloc()会导致分段错误?如何让malloc()返回一个NulL指针?
解决方法 根据文件:在ptr是空指针的情况下,该函数的行为类似于malloc,分配一个大小字节的新块并返回指向其开头的指针
如果要限制程序可以分配的内存,可以使用:
#include <sys/time.h>#include <sys/resource.h>rlimit l;getrlimit(RliMIT_AS,&l);l.rlim_cur = 1000;setrlimit(RliMIT_AS,&l);
http://man7.org/linux/man-pages/man2/setrlimit.2.html
总结以上是内存溢出为你收集整理的如何限制可用内存使`malloc()`失败?全部内容,希望文章能够帮你解决如何限制可用内存使`malloc()`失败?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)