想请教一下, python2 和 3 在 ctype 上的差异

2019-10-22 19:31:06 +08:00
 wave4yy
初学 ctypes,试了一段代码
from ctypes import *
import win32con

k32 = windll.kernel32

size = 20
sa = k32.LocalAlloc(win32con.LMEM_FIXED, size)
if sa == 0:
print("Memory Alloc Failed")
else:
print("sa: {}".format(hex(sa)))

发现这段代码在 python2 中申请的地址都是 c_int32 型,而在 python3 申请的内存地址都是 c_int64 型,有时候还会有 ffff 开头的地址

python2 版本为 Python 2.7.16 [MSC v.1500 64 bit (AMD64)] on win32
python3 版本为 Python 3.7.5 [MSC v.1916 64 bit (AMD64)] on win32

想问一下这是由什么原因导致的,有没有什么解决办法?
2143 次点击
所在节点    Python
2 条回复
imiao
2019-10-22 20:28:42 +08:00
你装的 python2 和 3 都是 64 位的吗?
wave4yy
2019-10-23 12:15:20 +08:00
@imiao 是的

python2 版本为 Python 2.7.16 [MSC v.1500 64 bit (AMD64)] on win32
python3 版本为 Python 3.7.5 [MSC v.1916 64 bit (AMD64)] on win32

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/611857

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX