跨平台内存分配器sbrk / virtualalloc

时间:2009-04-23 03:04:52

标签: c++ c memory cross-platform

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

例如,我想在Linux中调用sbrk,在Windows中调用VirtualAlloc(可能还有两个类似的系统调用,但它只是一个例子)。

3 个答案:

答案 0 :(得分:2)

我不熟悉有问题的功能,但是:

#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的新手),但总体思路应该有效。

答案 1 :(得分:0)

C为您提供mallocfree,C ++添加了newnew[]deletedelete[]以及展示位置表格以及C提供的内容。

还有更多东西,而且你已经超出了语言本身的范畴。你要么在OS领域踩踏,要么在汇编程序中捣蛋。毫无疑问,这些事情是跨平台的。

  

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

     

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

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

答案 2 :(得分:-1)

我最近发现这篇文章:

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

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