内存泄漏使用malloc失败

内存泄漏使用malloc失败,第1张

概述我正在编写一个泄漏内存(主内存)的程序来测试系统在低系统内存和交换内存时的行为方式.我们使用以下循环定期运行并泄漏内存 main(int argc, char* argv[] ) { int arg_mem = argv[1]; while(1) { u_int_ptr =(unsigned int*) malloc(arg_mem 我正在编写一个泄漏内存(主内存)的程序来测试系统在低系统内存和交换内存时的行为方式.我们使用以下循环定期运行并泄漏内存

main(int argc,char* argv[] )  {   int arg_mem = argv[1];        while(1)        {          u_int_ptr =(unsigned int*)  malloc(arg_mem * 1024 * 1024);        if( u_int_ptr == NulL )           printf("\n leakyapp Daemon @R_419_5138@ due to insufficIEnt available memory....");          sleep( arg_time );        }}

上面的循环运行一段时间并打印消息“leakyapp Daemon @R_419_5138@由于可用内存不足……”.但是当我运行命令“free”时,我可以看到运行该程序对主内存或交换没有影响.

难道我做错了什么 ?

解决方法 在您实际写入之前,物理内存不会提交给您的分配.

如果在2.6.23之后有内核版本,请使用带有MAP_POPulATE标志的mmap()而不是malloc():

u_int_ptr = mmap(NulL,arg_mem * 1024 * 1024,PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS | MAP_POPulATE,-1,0);if (u_int_ptr == MAP_@R_419_5138@)    /* ... */

如果您有较旧的内核,则必须触摸分配中的每个页面.

总结

以上是内存溢出为你收集整理的内存泄漏使用malloc失败全部内容,希望文章能够帮你解决内存泄漏使用malloc失败所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存