У нас есть библиотека, которая предоставляет интерфейс C через extern "C"
и используется из кода C, но внутри она использует контейнеры STL и некоторые функции C++, такие как RAII, для удобства.
Теперь появилось новое требование, согласно которому библиотека должна иметь возможность принимать указатели на пользовательские функции malloc
и free
, поступающие из клиентского кода, и использовать их для внутренних распределений. Я могу поместить их в контекстную структуру библиотеки и использовать там, где это необходимо, но использование их с STL вызывает недоумение...
Я просмотрел классы распределителей, но кажется, что контейнеры STL должны иметь возможность использовать конструкторы по умолчанию для создания распределителя, и кажется, что нет способа поместить в них эти указатели, чтобы они могли вызывать через них для выполнения распределения.
Можно ли обойти это предпочтительно потокобезопасным способом (без использования глобальных переменных)?