Подтвердить что ты не робот

Доступ к адресу памяти в python

Мой вопрос: как я могу прочитать содержимое адреса памяти в python? пример: ptr = id (7) Я хочу прочитать содержимое памяти, указанное ptr. Спасибо.

4b9b3361

Ответ 1

Посмотрите ctypes.string_at. Вот пример. Он удаляет исходную структуру данных целого числа Python 3. Надеюсь, вы делаете это только как упражнение. Нет причин для этого с чистым Python.

from ctypes import string_at
from sys import getsizeof
from binascii import hexlify
a = 0x7fff 
print(hexlify(string_at(id(a), getsizeof(a))))

Выход

b'02000000d8191e1e01000000ff7f'

Ответ 2

В Python вы обычно не используете указатели для доступа к памяти, если вы не взаимодействуете с приложением C. Если это то, что вам нужно, посмотрите на модуль ctypes для функций доступа.

Ответ 4

Вы пытаетесь "перевернуть" id, чтобы получить объект Python thing из результата id(thing)? Я даже не знаю, можно ли это сделать, и это определенно не должно быть сделано; это победит сбор мусора и приведет к отсутствию безопасности памяти. Если ваша программа делает это, это означает, что вы действительно имеете ссылки на вещи (цифры id), которые сборщик мусора не знает, это ссылки, поэтому он может освобождать объекты, которые вы все еще используете (в зависимости от того, что происходит в остальной части программа).

Если вы пытаетесь прочитать необработанную память из указателя, который вы вернули из расширения C или чего-то еще, тогда вам могут помочь другие ответы.