为什么Python ctype c_char_p在OSX和Windows上返回不同的值?

时间:2013-07-16 02:20:50

标签: python windows macos ctypes

我正在学习更多有关Pythons 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!")每次运行时都会返回不同的数值。

有人可以说明为什么会发生这种情况吗?

先谢谢。

1 个答案:

答案 0 :(得分:2)

查看the source__repr__只会显示字符串

的内容
  1. 它在Windows上运行;和
  2. IsBadStringPtr返回TRUE
  3. 他们可能希望在可能的情况下显示字符串表示形式,因为这是一个非常有用的东西,但如果它指向某个意外的地方,则不会使程序崩溃。 IsBadStringPtr仅存在于Windows上,需要进行第一次检查。坦率地说,我很惊讶他们会使用它,因为它显然已经过时了,for good reasons