LINUX.ORG.RU

Выделение памяти из заранее известного хипа....


0

0
В виндах функция VirtualAlloc выделяет место из переданного в качестве аргумента пространства. malloc/free выделяют место из какого-то общего системного пространства. А как устроить так, чтобы память выделялась из моего пространства, т.е. сымитировать VirtualAlloc?
А в каком языке?

Если C, то написать систему выделения блоков из заданного пула не составит труда. Возможно подойдёт уже готовый вариант в c2lib. Ещё помочь могут mm(OSSP), libcoro, libcii.
С++ - перегрузка new или свои allocator_traits.

loki
()
Использовать свою функцию или один из возможных синтаксисов new когда можно говорить ему где расположить объект.

#include <cstdio>
#include <new>

int main()
{
char p[100];

char *x = new(p) char[100];
p[0] = 74;
printf ("%u\n", x[0]);
// delete[] x; // только delete не делай...

return 0;
}
anonymous
()
VirtualAlloc аналогичная mmap/MAP_ANONYMOUS. Никаких аргументов-пространства она не принимает.

Если вдруг речь про HeapAlloc, то почитай info libc на предмет управления памятью.
Murr ★★
()
Ответ на: комментарий от Murr
Гм, да, сорри - я описался. Конечно имеется ввиду HeapAlloc. Но :( Что-то ничего полезного в info libc я не нарыл. 2Murr: нельзя ли ткнуть пальцем? А то у меня руки криво растут, что ли...
Debugger
() автор топика
Ответ на: комментарий от Debugger
А я и не говорю, что там что-то похожее есть. :) Просто там задокументировано всё, что есть в glibc, по разделам. Впрочем, есть некие obstacks, правда это не heap allocator, но нечто похожее ... Если они тебя не устроят, то нужно писать самому... (ну или искать стороннее).
Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.