当前位置:  技术问答>linux和unix

内存溢出问题,急!!!

    来源: 互联网  发布时间:2015-12-23

    本文导语:  //程序基本功能描述:在linux环境中,从usb摄像头不断地获取图片,压缩成jpg格式,以指定格式的 //文件名存到指定位置 //问题描述:运行一段时间后,报错:output file write error--out of disk space?,我定时手动 //把生成的图片删...

//程序基本功能描述:在linux环境中,从usb摄像头不断地获取图片,压缩成jpg格式,以指定格式的
//文件名存到指定位置
//问题描述:运行一段时间后,报错:output file write error--out of disk space?,我定时手动
//把生成的图片删除,保证不是因为图片过多的原因造成该结果.

哥们!我搞了一上午,没结果啊,经理在催了,哎!!!    帮我!!

代码如下:
int main(int argc,char argv[]){
.....declare variables
.....init codes.....
.....
.....
    while(max_try){   //max_try初始化为5,即尝试打开摄像头,5次失败的话退出
        dev=open(device,O_RDWR);
        if(dev==-1){
            if(!--max_try){
                fprintf(stderr,"can't open the device %s",device);
                retrun 1;
            }
        }else
             break;
    }
    while(1){       //不断地获取图片,并压缩,以当前时间精确到3位毫秒为文件名存到指定文件夹
        ftime(&tp); // struct timeb * tp
        p=localtime(&tp.time); //struct tm * p
        sprintf(struct_myfile.filename,"%s%04d%02d%02d%02d%02d%02d%03d.jpg",coorid,(1900+p->tm_year),(1+p->tm_mon),p->tm_mday,p->tm_hour,p->tm_min,t->tm_sec,tp.millitm);
               //  coorid 是一个字符串常量,struct_myfile是一个结构提有file和filename是
               //长度为256的数组两个成员,保证使用sprintf()堆栈不益处
        sprintf(struct_myfile.file,"/picture/%s",struct_myfile.filename);
       //图片路径为/picture/..jpg
        if(*(struct_myfile.file)){    //如果文件创建成功,打开文件
            out=fopen(struct_myfile.file,"wb");// FILE * out
            if(!out){
                perror(struct_myfile.file);
                return 1;
            }    
        }
        fseek(out,0,SEEK_SET);
        if(!num){                    //int num=0; 该if块只执行一次
            if(v41_set_input(dev,input,norm)==-1)
                return 1;
            if(v41_check_size(dev,&width,&height)==-1)
                return 1;
        }
        if(format==FMT_YUV4MPEG){    //FMT_YUV4MPEG 是一个常量
            if(palette==VIDEO_PALETTE_YUV420P)
                retrun to_yuv(out,dev,width,height);//函数to_yuv 的功能我也不明白,
                          //有个注释:write YUV4MPEG stream which is nice for mpeg2enc
            break;
        }
        image=get_image(dev,width,height,paleete,&size);//获取图片,由char * image 指向
        if(image){         //获取成功,写入out 指向的打开文件
            put_image_jpeg(out,image,width,height,quality,palette);
            if(size)
                munmap(image,size);//释放image指向的内存
            else if(image)
                free(image);
        }
    }
}

|
you did not close the file which you opened for the output. then after some time, your program reached the maximum number of files allowed to open. so the solution is to add 

fclose(out);

after finishing the output.

Regards

    
 
 

您可能感兴趣的文章:

  • java内存溢出示例(堆溢出、栈溢出)
  • jvm内存溢出解决方法(jvm内存溢出怎么解决)
  • tomcat6.0 /7.0安装版内存溢出设置方法
  • 浅谈C#互操作的内存溢出问题
  • 回调函数中疑似内存溢出,GTK+
  • android内存及内存溢出分析详解
  • Android 异步获取网络图片并处理导致内存溢出问题解决方法
  • Tomcat内存溢出分析及解决方法
  • !!!!内存溢出问题,解决再加100!!!!!!!!!!!
  • 基于Java内存溢出的解决方法详解
  • c/c++服务器程序内存泄露问题分析及解决
  • 一个问题,关于kmalloc分配的内存和编译器自动分配的内存的问题(堆和栈)
  • 请教一个关于内存分配的问题(系统和DMA共享一块物理内存空间)
  • [跪求解答]关于虚拟内存中页目录与页表在物理内存中加载的问题
  • 遇到奇怪的内存泄露问题,应用程序杀死内存无法释放!
  • 请教关于linux内存管理问题,如何给定义的变量指定固定内存段
  • 【求助】AIX下进程内存分配问题,无法分配超过256M的内存
  • Solaris上内存释放问题
  • vsftpd占用内存的问题
  • linux虚拟内存的问题!急!!!
  • 请教几个虚拟内存的问题!谢谢
  • 有关系统内存的概念问题
  • 共享内存问题,高手们请进!!!
  • ubuntu的问题。查看内存使用情况的问题
  • dos内存问题,请帮助
  • 问个LINUX内存分配的问题。
  • 关于虚拟内存的一点概念问题
  • 请教一个内存方面的问题
  • 有关高端内存的问题
  • 一个关于内存的问题
  • 初学者关于共享内存的几个问题-->
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Vectors 成员 get_allocator():返回vector的内存分配器
  • 我的机器内存128 ,安装redhat9 后,可用内存很少了,如何节省内存呢?
  • C++ Vectors 成员 capacity():返回vector所能容纳的元素数量(在不重新分配内存的情况下)
  • 奇闻:Apache+Apache JServ 1.1.1+1G内存居然报内存不够,那位高友知道参数设置,把俺的1G内存都利用起来,感激不尽啊
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 怎样读取指定内存地址处指定长度的内存数据???(
  • C/C++内存池实现介绍及基本要求
  • 【操作系统虚拟内存和物理内存疑惑】
  • linux下free命令显示的内存使用情况分析
  • Solaris下如何获得物理内存和虚拟内存的大小?
  • c/c++内存堆分配和栈分配理解
  • 程序需要共享内存相当大,但是系统的内存有限
  • Ubuntu查看内存,进程相关命令介绍
  • 关于大于2G内存的使用.....按32位编译的进程怎么使用大于2G的内存?
  • Linux 共享内存介绍及实现代码
  • redhat9内存使用率高达73%,怎么查看内存具体使用情况
  • Linux内存文件系统(ramdisk)的三种实现方式
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?
  • Microsoft IE MSHTML内存破坏远程代码执行漏洞
  • redhat7.1 p4,700多m内存,经常耗了400m内存,为什么?
  • Microsoft Internet Explorer内存破坏漏洞(CNVD-2013-13096)
  • 哪位前辈给解释下linux下虚拟内存和物理内存的关系!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3