代码之家  ›  专栏  ›  技术社区  ›  Unknown

跨平台内存分配器sbrk/virtualloc

  •  0
  • Unknown  · 技术社区  · 16 年前

    我想知道是否有一个跨平台的分配器比malloc/free低一步。

    例如,我想要一些在Linux中简单地称为sbrk,在Windows中简单地称为virtualloc(可能还有两个类似的系统调用,但它只是一个例子)。

    3 回复  |  直到 13 年前
        1
  •  2
  •   Tabitha deanWombourne    16 年前

    我不熟悉相关功能,但:

    #if defined (__WIN32__)
      #define F(X) VirtualAlloc(X)
    #elif defined (__LINUX__) /* or whatever linux's define is */
      #define F(X) sbrk(X)
    #endif
    

    不确定语法是否为100%(我是Macros&C的新手),但总的来说应该是可行的。

        2
  •  0
  •   dirkgently    16 年前

    C给你 malloc free ,C++添加 new , new[] , delete delete[] 以及除了C提供的内容之外的放置表单。

    再多的话,你就脱离了语言的范畴。你要么在OS的土地上行走,要么在汇编程序中混迹。毫无疑问,这样的事情是跨平台的。

    我想知道,如果存在这样的分配器,它会有什么好处?

    您可以实现自己的malloc/free,而不用担心底层操作系统

    你还需要另一个跨平台的解决方案来实现这个和另一个…你明白了。这不是一个可行的方案。

        3
  •  -1
  •   Roman Pfneudl    13 年前

    我最近发现这篇文章:

    http://www.genesys-e.org/jwalter//mix4win.htm

    它基本上使用virtualloc在Windows下实现sbrk()。