Я хотел бы выделить память в Linux в процессе по определенному адресу. На самом деле я хотел бы сделать что-то вроде: У меня будет количество процессов. Каждый процесс вызовет функцию инициализации в библиотеке (написанной мной), которая будет выделять некоторую память в адресном пространстве процесса (который будет хранить информацию, относящуюся к процессу). Это будет выполняться каждым процессом.Выделение определенного адреса в Linux
После выделения этой памяти последняя программа вызовет другую функцию в библиотеке. Теперь эта функция хотела бы получить доступ к выделенной памяти (содержащей информацию о процессе) первой функцией.
Проблема заключается в том, что я не могу сохранить адрес памяти, выделенной в адресном пространстве процесса в библиотеке (даже не в статическом указателе, поскольку есть число процессов), и я даже не хочу, чтобы программа пользователя сохраняла этот адрес , Я просто не хочу, чтобы пользовательская программа знала, что в их адресном пространстве выделена библиотека, выделенная библиотекой. Функция библиотеки будет абстракцией для них, и они должны просто использовать их.
Возможно ли преодолеть эту проблему. Я думал, что всякий раз, когда какой-либо процесс вызывает функцию инициализации библиотеки, которая выделяет память, память всегда распределяется по одному и тому же адресу (скажем, 10000) во всем процессе, независимо от всех других вещей.
Так что любая функция библиотеки, которая хочет получить доступ к этой памяти можно легко сделать с помощью: char *p=10000;
, а затем доступа, который будет доступ в адресное пространство процесса, который называется библиотечную функцию.
Вопрос немного расплывчатый. У вас есть конкретный пример использования? –
Почему библиотека не может отслеживать распределения?Например, в динамическом списке. – jwd