标题几乎就是问题...
我正在编写一些使用自旋锁来帮助列表管理的代码。关于自旋锁的文档非常清楚不调用任何会休眠的东西。我知道有一些方法可以分配“原子”内存,但我没有看到任何关于 kfree 或释放内存的信息。
直觉告诉我它不应该睡觉,但我还没有发现这是明确的。
我有一个ctypes结构(例如):
from ctypes import *
class Foo(Structure):
_fields_ = [('f1',c_uint),
('f2',c_uint)]
Run Code Online (Sandbox Code Playgroud)
我想将该结构的一个实例复制到一个从create_string_buffer创建的缓冲区(它的大小比单个Foo实例所需的大).
例:
f = Foo()
f.f1=1; f.f2=2;
buf = create_string_buffer(100)
buf[0:sizeof(f)] = f
Run Code Online (Sandbox Code Playgroud)
我知道你可以在文件对象的结构上读取和写入数据(即打开('bar','rb').readinto(f)),所以似乎应该有一些方法可以轻松地做到这一点. .
在有故障转储的地方调试时,vtable 指针是内存中对象的良好指示器。
我想在 gdb 中做的是能够通过执行类似的操作来查询 vtable
info address 'vtable for Bar'
Run Code Online (Sandbox Code Playgroud)
但是,我找到的唯一方法(不需要对象的有效实例)是对 vtable 使用损坏的名称。
例子:
info address _ZTV3Bar
Run Code Online (Sandbox Code Playgroud)
尝试找出 vtable 损坏的名称并不是世界末日,但它很烦人(即使用 objdump -t myexecutable)。
有没有人知道我可以以一种不那么痛苦的方式找到类型的 vtable 地址的方法(不需要类型的有效实例)?
- 规则:不能要求有问题的对象的有效实例并在对象中找到 vtable 指针。