Кроссплатформенный распределитель памяти sbrk / virtualalloc - PullRequest
0 голосов
/ 23 апреля 2009

Мне интересно, есть ли кроссплатформенный распределитель, который на один шаг ниже, чем malloc / free.

Например, я хочу что-то, что будет просто вызывать sbrk в Linux и VirtualAlloc в Windows (может быть еще два похожих системных вызова, но это только пример).

Ответы [ 3 ]

2 голосов
/ 23 апреля 2009

Я не знаком с этими функциями, но:

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

Не уверен, что синтаксис равен 100% (я новичок в макросах и с), но общая идея должна работать.

0 голосов
/ 25 января 2012

Я недавно нашел эту статью:

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

Он в основном реализует sbrk () под Windows, используя VirtualAlloc.

0 голосов
/ 23 апреля 2009

C дает вам malloc и free, C ++ добавляет new, new[], delete и delete[] и формы размещения в дополнение к тому, что предоставляет C.

Что-нибудь еще, и вы выходите за рамки собственно языка. Вы либо наступаете на OS-землю, либо убиваете ассемблера. Нет сомнений в том, что такие вещи кроссплатформенные.

Мне интересно, что было бы хорошего, если бы существовал такой распределитель?

Вы можете реализовать свой собственный malloc / free, не беспокоясь о базовой ОС

И вам нужно другое кроссплатформенное решение для реализации этого и другого ... вы понимаете. Это не жизнеспособная схема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...