2009-04-23 63 views
0

我想知道是否有跨平臺分配器比malloc/free低一級。例如,我想要一些簡單地稱爲Linux中的sbrk和Windows中的VirtualAlloc的東西(可能有兩個更類似的系統調用,但它只是一個示例)。跨平臺內存分配器sbrk/virtualalloc

+0

我想知道如果這樣的分配器存在會有什麼好處呢? – lothar 2009-04-23 03:12:20

+0

你可以實現你自己的malloc/free,而不用擔心底層操作系統。 – Unknown 2009-04-23 03:21:32

+0

聽起來像完全相反。 malloc/free是跨操作系統(通過C庫)的標準接口,您的每個操作系統都需要不同的OS調用。 – lothar 2009-04-23 15:33:02

回答

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%(我是新來的宏& C),但總體思路應該工作。使用的VirtualAlloc

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

它基本上實現了SBRK()在Windows下:

0

C爲你mallocfree,C++增加newnew[]deletedelete[]而且除了什麼C提供的安置形式。

還有什麼,你超出了語言本身的領域。你要麼在操作系統的土地上行走,要麼在組裝者中謀殺。毫無疑問,這種事情是跨平臺的。

我想知道如果這樣的分配器存在會有什麼好處呢?

你可以實現你自己的malloc /自由,而不必擔心底層的操作系統

而且你會想其他的跨平臺解決方案來實現這一點,另一個......你明白了吧。這不是一個可行的方案。

0

最近,我發現這篇文章。