Akagi201
V2EX  ›  问与答

为什么有的库中, 内存申请, 释放等函数要做成可修改的, 比如 curl. malloc, realloc 这种不是通用的吗?

  •  
  •   Akagi201 · Dec 7, 2014 · 3075 views
    This topic created in 4352 days ago, the information mentioned may be changed or developed.
    8 replies  •  2014-12-08 13:46:27 +08:00
    YouXia
    YouXia
    Dec 7, 2014 via Android
    1
    肯定是通用的啊,但是大部分情况下,此类型函数下是使用标准库函数做的操作,可能也包括其他一些简单语句,主要作用就是显得模块化,并且可扩展性吧。
    Akagi201
    Akagi201
    OP
    Dec 7, 2014
    2
    @YouXia 我就是没有遇到过, 内存管理还需要修改的. 不同的操作系统倒是遇到过... ==, 这个就是为不同操作系统移植时候准备的?
    choury
    choury
    Dec 7, 2014 via Android❤️1
    3
    比如你用的是一个内存池,自己实现的分配释放内存的函数
    YouXia
    YouXia
    Dec 7, 2014 via Android❤️1
    4
    @Akagi201

    见楼上例子,基本上就会封装下标准库。另外我也见过为了可移植性,封装的,比如涉及到系统函数,Win、Linux下做不同的调用。

    这个不用太纠结啊,这种封装肯定利于修改代码啊。
    RemRain
    RemRain
    Dec 7, 2014❤️1
    5
    malloc、realloc 等默认是由 glibc 提供的,做成可修改的好处是,方便修改为第三方内存管理库,比如 jemalloc
    lsmgeb89
    lsmgeb89
    Dec 7, 2014❤️1
    6
    curl 还真是体贴周到啊。比较大型的程序,几十万行到百万行,应该有自己的内存管理策略,有专门的模块负责,一是提高效率,二是方便调试内存问题。这样的程序用第三方库的代码时候,就可能改掉原来的内存接口,统一调用内部的模块。
    Akagi201
    Akagi201
    OP
    Dec 7, 2014
    7
    @lsmgeb89
    @RemRain
    @YouXia

    懂了, 一时没想到例子
    xylophone21
    xylophone21
    Dec 8, 2014
    8
    依赖倒置原则,其它已经有人说了.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1034 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 19:01 · PVG 03:01 · LAX 11:01 · JFK 14:01
    ♥ Do have faith in what you're doing.