我想知道是否有一个比malloc / free低一级的跨平台分配器。
例如,我想在Linux中调用sbrk,在Windows中调用VirtualAlloc(可能还有两个类似的系统调用,但它只是一个例子)。
答案 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为您提供malloc
和free
,C ++添加了new
,new[]
,delete
和delete[]
以及展示位置表格以及C提供的内容。
还有更多东西,而且你已经超出了语言本身的范畴。你要么在OS领域踩踏,要么在汇编程序中捣蛋。毫无疑问,这些事情是跨平台的。
我想知道如果这样的分配器存在会有什么好处呢?
您可以实现自己的malloc / free而无需担心底层操作系统
你需要另一个跨平台的解决方案来实现这个和另一个......你明白了。这不是一个可行的方案。
答案 2 :(得分:-1)