가난한시인
112
2015-07-20 10:37:32.0
6
1899

python 메모리 값 가져오기


다름이 아니라 지금 python에서 변수를 선언한 후 해당 변수의 주소 값을 hex()라는 함수를 이용하여서 알아내었습니다.

역으로 알아낸 주소 값에 들은 값을 추출해서 변수에 담고 싶습니다.

어떻게 해야하나요?ㅠㅠ

c에서는 간단한건데 python에서는 어렵네요.

0
0
  • 답변 6

  • fx
    645
    2015-07-20 10:47:47.0

    어째서 hex() 가 변수의 주소값이라고 생각하셨나요?

    정수형을 hexadecimal 문자열로 반환하여 줍니다.


    0
  • 가난한시인
    112
    2015-07-20 11:01:10.0

    1 그래서 id() 함수를 사용해서 레퍼런스 값을 가져오긴 했는데 


    이게 메모리 주소 값이 아닌가봐요?ㅠㅠ

    0
  • fx
    645
    2015-07-20 12:23:39.0
    ctypes.cast(id(obj), ctypes.py_object).value
    0
  • 가난한시인
    112
    2015-07-20 12:34:52.0

    fx 님 질문이 있습니다.

    저는 python을 통한 임베디드 프로그래밍(?) 같은 걸 하려고 했습니다.



    제가 이 테스트를 하는 이유는 위 그림처럼 메모리 주소에 0x01이라는 값이 있으면 python에서 메모리 주소로만 11값을 가져오는 것을 하고 싶어서 였습니다.

    저 11 값은 파이썬에서 선언한 변수가 아니라 외부에서 지정한 값이구요.

    python에서 가능할까요?

    0
  • fx
    645
    2015-07-20 13:02:35.0

    네 가능합니다. 변수의 형식을 알아야 합니다. ctypes에 몇가지 c타입이 정의되어 있습니다.

    int 형 변수가 0x01에 설정되어 있다면

    ctypes.c_int.from_address(0x01).value

    로 값을 알아낼 수 있습니다.


    0
  • 가난한시인
    112
    2015-07-20 13:07:09.0
    segmentation fault 에러가 나는 경우는 접근할수 없는 경우인가요?
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.