Accéder à l'adresse mémoire en python

Ma question est: Comment puis-je lire le contenu d'une adresse mémoire en python? exemple: ptr = id (7) Je veux lire le contenu de la mémoire pointé par ptr. Grâce.

22
demandé sur Matt 2011-11-24 03:42:13

4 réponses

regardez ctypes.string_at. Voici un exemple. Il supprime la structure de données brutes d'un entier Python 3. J'espère que tu ne fais ça que comme un exercice. Aucune raison de faire ça avec du Python pur.

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

Sortie

b'02000000d8191e1e01000000ff7f'
32
répondu Mark Tolonen 2011-11-24 08:37:41

en Python, vous n'utilisez généralement pas de pointeurs pour accéder à la mémoire à moins d'interfacer avec une application C. Si c'est ce dont vous avez besoin, regardez le module ctypes pour les fonctions d'accesseur.

8
répondu Raymond Hettinger 2011-11-24 00:10:26

"je veux lire le contenu de la mémoire pointé par ptr"

écrire du code en C. Utilisez le code de Python. http://docs.python.org/extending/extending.html

4
répondu S.Lott 2011-11-23 23:56:36

Êtes-vous essayer de "reverse" id pour obtenir l'objet Python thing du résultat de id(thing)? Je ne sais même pas si cela peut être fait, et cela ne devrait certainement pas être fait; cela irait à l'encontre de la collecte des ordures et conduirait à un manque de sécurité de la mémoire. Si votre programme fait cela, cela signifie que vous avez effectivement des références à des choses (le id nombres) que le collecteur d'ordures ne connaît pas sont des références, de sorte qu'il pourrait libérer des objets que vous utilisez toujours (selon ce qui se passe dans le reste du programme).

si vous essayez de lire la mémoire brute à partir d'un pointeur que vous avez récupéré d'une extension C ou quelque chose, alors les autres réponses peuvent vous aider.

1
répondu Ben 2011-11-24 01:49:58