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 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.