getmem в библиотеке и вне

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

getmem в библиотеке и вне

Сообщение ger0strat » 22.09.2014 19:35:38

Доброго времени суток.
Честно говоря вопрос можно решить тестом, но хочется более подробного ответа.
Понятно, что библиотека и сама программа имеют отдельные менеджеры памяти. Понятно, что если выделить память в библиотеке, то освободить можно только там же. Не понятно, почему что-то типа этого:
Код: Выделить всё
function foo_getmem(n:integer):pointer;cdecl;export;
begin
  result:=getmem(n);
end;

находящееся внутри библиотеки, вызванное извне, выделит библиотечную память?
Тогда получается, что fpc прилинковывает этот самый менеджер и все getmem'ы направляет на него. Тогда можно ли его заставить не прилинковывать, а память будет выделяться в программе функцией типа вышеприведенной? (расшаривать блоки данных в моей задаче не надо)

А если это выделит все-таки память программы, то в каком случае тогда может быть использована библиотечная (кроме вызовов из initialization).

Если ахинею несу, пардоньте, уже голова не работает.
ger0strat
новенький
 
Сообщения: 40
Зарегистрирован: 13.05.2014 19:35:56

Re: getmem в библиотеке и вне

Сообщение zub » 22.09.2014 20:36:30

Код: Выделить всё
uses cmem, ... ;

и в exe и в dll - поставит общий менеджер памяти

>>Не понятно, почему что-то типа этого:
>>находящееся внутри библиотеки, вызванное извне, выделит библиотечную память?
Что непонятного? foo_getmem откуда бы небыл вызван выделит библиотечную память, т.к. внутри его "вкомпилирован" вызов библиотечного менеджера памяти
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: getmem в библиотеке и вне

Сообщение ger0strat » 23.09.2014 10:59:40

Меня переклинило на том, что getmem'ы одинаковые. Гугление по подстановке менеджера памяти как в cmem привело к идеальному варианту http://www.freepascal.ru/article/freepascal/20050522025034
ger0strat
новенький
 
Сообщения: 40
Зарегистрирован: 13.05.2014 19:35:56


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru