如何故意在Python中导致或创建无效的内存引用?

时间:2011-06-14 00:51:54

标签: python

如何故意在Python中导致或创建无效的内存引用?

这是一个酒吧赌注。我被告知无法做到。我不相信。

3 个答案:

答案 0 :(得分:5)

>>> import ctypes
>>> p = ctypes.POINTER(ctypes.c_int)(ctypes.c_int())
>>> p[100000000]
Segmentation fault

答案 1 :(得分:3)

在C:

中创建一个模块
#include <Python.h>

static PyMethodDef SpamMethods[] =
{
    {NULL, NULL, 0, NULL}
};

PyMODINIT_FUNC
initspam(void)
{
    (void)Py_InitModule("spam", SpamMethods);
    int* invalidptr = NULL;
    *invalidptr = 42;
}

然后从python:

import spam

答案 2 :(得分:2)

也许使用ctypes:

from ctypes import *
a = cast(0x1000, POINTER(c_int))
print a.contents