У меня есть архитектура плагина, где я вызываю функции в динамической библиотеке, и они возвращают мне char*
, который является ответом, он используется на более позднем этапе.
Это подпись функции плагина:
char* execute(ALLOCATION_BEHAVIOR* free_returned_value, unsigned int* length);
где ALLOCATION_BEHAVIOR
должен быть: DO_NOT_FREE_ME
, FREE_ME
, DELETE_ME
, где плагин (в библиотеке) сообщает мне, как плагин выделил строку, которую он только что вернул: DO_NOT_FREE_ME
сообщает мне, что это это переменная, которую я не должен касаться (например, const static char*
, которая никогда не изменяется) FREE_ME
говорит мне, что я должен использовать free()
для освобождения возвращаемого значения, а DELETE_ME
говорит мне использовать delete[]
для получения избавиться от утечек памяти.
Очевидно, что я не доверяю плагинам, поэтому я хотел бы иметь возможность проверить, что если он скажет мне free()
переменную, действительно, это действительно может быть освобождено... Возможно ли это использование сегодняшняя технология C/С++ для Linux/Windows?