如何故意在Python中导致或创建无效的内存引用?
这是一个酒吧赌注。我被告知无法做到。我不相信。
答案 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