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

新手请教高手在linux上用c写结构体时是不是有大小限制?如何解决?

    来源: 互联网  发布时间:2015-10-13

    本文导语:  新手用c在linux上开发一通信规约,由于规约中的数据动态变化,现在实现是用链表,根据报文中的数据动态生成链表,解释完成后在删除链表结点,这样需频繁分配和释放空间,别人说频繁分配和释放易造成内存碎片...

新手用c在linux上开发一通信规约,由于规约中的数据动态变化,现在实现是用链表,根据报文中的数据动态生成链表,解释完成后在删除链表结点,这样需频繁分配和释放空间,别人说频繁分配和释放易造成内存碎片,容易造成系统死机,是否这样。
如果我按报文可能出现的最大数据事先定义解释后存放数据的结构体,编译通过,但调试运行时出错,该结构体太大了,地址空间出错了,无法进入。
请问高手如果用链表频繁分配和释放是否会造成程序不稳定?
如果事先定义好最大的存放空间,有何办法解决?

|
如果想防止链表出错可以用预先分配内存的方法,我在内核开发都是这样做,内存为一段连续的空间,可以作成环形,你可以在这段连续空间放置数据包结构体,注意判断是否用尽这段内存就可以了,程序结束释放掉OK

|
一、不会造成不稳定,有关的操作系统会帮你回收好垃圾并重新利用,只要你释放内存。
二、一开始定义好空间的话,可以考虑所有的指针都不用真实地址,而用相对第一个地址的偏移量

|
有这样的限制吗,愿闻其详.

>>如果事先定义好最大的存放空间,有何办法解决?
例:
定义标准空间SIZE = N BYTE
定义标准空间个数 = M个
一开始分配好.
用空闲队列来管理.

如果最大的存放空间 =X BYTE,则从M个中拿 N/X 个空间出来.
不用了,归还到空闲队列中去.

总的想法,一个电文可以用多个标准块来存放.

|
可以自己加一套内存管理机制,第一次向管理者请求内存时分配,用完后交还给管理者待下一次请求时返回给请求者,一直到程序退出时才释放

    
 
 

您可能感兴趣的文章:

  • 新手请教,我用VI时按ESC键,总是回嘟嘟嘟嘟响,请问如何去掉!谢谢!
  • 新手请教Linux和ubuntu
  • Linux新手请教声卡驱动!!!!!!!!!!!
  • 新手来请教一个关于IDE的问题
  • 大家好,我是linux新手,有些问题请教
  • 新手,有问题请教!
  • 新手,请教关于文件编辑问题...
  • 新手请教:RedHat Linux 7.3下的网络连接问题
  • mysql iis7站长之家
  • 新手虚心请教.在线等复....vsftp配置成功后,本机可以FTP上,但其他系统通过FTP工具不能上.防火墙不能关..
  • 新手请教啦~~能不能帮忙推荐几本书
  • 新手,请教安装SCO Unix的问题
  • 新手请教!!!!
  • 新手请教2
  • 新手请教:我的声卡所附光盘提供了下面的这些文件,我怎么安装驱动?
  • 新手的问题,请教高手
  • 新手请教安装问题!
  • 新手向大家请教jsp,servlet的调试,发布问题
  • 我是新手,请教LINUX下如何访问光驱里的文件。
  • 新手请教一下学习GCC的经验
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 新手提问【Ubuntu上如何增加虚拟硬盘的大小!】
  • 新手如何加入开源项目 有什么好的c++,java 开源适合新手 请指点!
  • JDBC的问题,新手高手都来看看吧,说不定能帮帮我这个新手呢,谢谢!
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 新手关于驱动开发的疑问
  • 新手有关linux的问题!
  • 新手急求~~~~~~~~~~~~~~~~~~~
  • 新手学习该用哪个版本
  • 面向新手的终端辅助工具 Clicompanion
  • 我是个新手,请各位老兄给介绍基本好书?
  • 我是新手
  • 新手:用WEB页面修改数据库中的表?
  • Java新手上路之问题
  • 我是一名新手,请问如何学java
  • (新手)这里怎么看到300篇以外的所有文章?(不是搜索)
  • 新手求助!
  • 新手上路,怎样判断网卡是否安装成功?
  • !!新手求救!!
  • 新手在此多谢了:SUN的宠物商店
  • 新手求救!!关于变量初始化
  • 新手问题:RH怎么退回字符界面? 急!!!!


  • 站内导航:


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

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

    浙ICP备11055608号-3