如何限制可用内存使`malloc()`失败?

如何限制可用内存使`malloc()`失败?,第1张

概述我想通过限制可用内存使malloc()失败. $ulimit -v 1000$./main.exe 100000000x102bfb000 但即使使用ulimit,以下程序仍然可以正确完成.有人知道怎么让malloc()失败吗?谢谢. #include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) { s 我想通过限制可用内存使malloc()失败.

$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()`失败?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1229277.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存