Например, если я объявил функцию в основном приложении и передал указатель на нее из динамически загружаемой библиотеки (через dlopen
в Linux или LoadLibrary
в Windows), используя аргумент полученного символа (черезdlsym
или GetProcAddress
соответственно) и попытаться вызвать эту функцию, будет ли она работать правильно?
То же самое, если передать указатель из одной динамически загруженной библиотеки в другую?Я думаю, что это должно работать, если указатель, по крайней мере, относительно приложения, но не относительно модуля / библиотеки.
Другой пример.Я объявляю функцию в одном приложении и передаю указатель на нее в другое полностью независимое приложение (как на C, так и на C ++) каким-либо образом (строка параметров или файл ввода-вывода - просто как идея) и пытаюсь вызвать эту функциюработать тоже?Я мог бы ожидать, что это сработает, если указатели будут абсолютными.Может быть, он просто не будет работать, потому что системе вообще не понравится такой перекрестный вызов из-за безопасности?