Я больше узнаю о модуле Python ctypes и заметил странность, которую не знаю, как объяснить.
В Windows (Python 2.7.4) возвращается следующее:
>>> from ctypes import *
>>> c_char_p("Hello World!")
c_char_p('Hello World!')
В то время как в OSX (Python 2.7.2) возвращается следующее:
>>> from ctypes import *
>>> c_char_p("Hello World!")
c_char_p(4479401388)
Кроме того, в OSX c_char_p("Hello World!")
возвращает другое числовое значение при каждом запуске.
Может ли кто-нибудь пролить свет на то, почему это может происходить?
Заранее спасибо.
s = b"Hello World"; c_char_p(s)
. Вот почему вы используете строку Python напрямую только сconst char *
(или эквивалентноchar const *
). Это же правило относится и кc_wchar_p
. 16.07.2013c_wchar_p
. Он по-прежнему segfaults, если указатель неправильный на платформах, отличных от Windows. Обратите внимание, что дляz_get
иZ_get
(строка 1459) они перенесли вызовыIsBadStringPtr
в C. 16.07.2013Z_get
, в Windows неверный указатель приводит к тому, что reprc_wchar_p
вызываетValueError
-- опять же, потому что исправление repr также не применялось к классуc_wchar_p
. 16.07.2013