Честно говоря вопрос можно решить тестом, но хочется более подробного ответа.
Понятно, что библиотека и сама программа имеют отдельные менеджеры памяти. Понятно, что если выделить память в библиотеке, то освободить можно только там же. Не понятно, почему что-то типа этого:
- Код: Выделить всё
function foo_getmem(n:integer):pointer;cdecl;export;
begin
result:=getmem(n);
end;
находящееся внутри библиотеки, вызванное извне, выделит библиотечную память?
Тогда получается, что fpc прилинковывает этот самый менеджер и все getmem'ы направляет на него. Тогда можно ли его заставить не прилинковывать, а память будет выделяться в программе функцией типа вышеприведенной? (расшаривать блоки данных в моей задаче не надо)
А если это выделит все-таки память программы, то в каком случае тогда может быть использована библиотечная (кроме вызовов из initialization).
Если ахинею несу, пардоньте, уже голова не работает.