问题标签 [object-address]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 对象方法的真实地址
我知道我可以创建方法指针,而且我知道它们通常不同于函数指针。不允许在它们之间转换。方法指针可以包含大量关于如何调整this
指针等的数据。
我想知道如何获取正在执行给定方法的代码的实际地址。此地址不会以任何方式被引用,但将用作给定方法所属类型的标识符 - 有点像 RTTI,优点是对库边界不敏感,因为此代码通常仅在一个单元中可用.
编辑:
为什么我不添加一些getType()
返回对象类型的方法?
因为我希望能够以这种方式使用不仅是我创建的类。我想要做的基本上是我的variant
类的实现,它基本上可以接受所有东西,只要存在给定类型的 void* getVariantId() 特化。
那么我可以写:
这个想法是fromType
用于getTypeId
获取类型的表示值,并将其与对象的指针一起转换为void*
. toType
另一方面,比较从 `getTypeId::get 获得的值和存储在对象中的值 - 如果匹配,则将内部保存的对象指针重新解释回原始类型并返回。
这个解决方案的美妙之处在于,即使有一些定义类型 x 的共享库 X,然后是分别使用库 X 的库 Y 和 Z,也会同意类型 x 是相同的(例如,如果在 Y 中创建的变体是传递给 Z),导致 X::method 上的地址保持不变。作为 Y 或 Z 库的创建者(但不是 X !!!),我不需要确保 X 库启用了 RTTI,甚至不需要知道 myVariant 的存在,但类型 x 仍然完全兼容 myVariant。
编辑2:
我现在看到没有独立于实现的方法来完成这项工作。但是,我认为这是不通常需要的怪癖,因此不存在的功能,而不是不可能创建的功能。我想我仍然没有明确我想要实现什么以及我打算如何做到这一点。所以:
这里的库是指共享库(.dll、.so 等)。
每个不是纯虚拟的方法(意味着定义的每个方法)都必须有实现。此实现的行为类似于接受一个附加参数的函数
this
- 虚函数仅在调用方方面有所不同。让我们以类 X 及其方法X::foo
为例。该方法只绑定到 X 类型,即使 Y 类型继承了它,该方法仍然存在X::foo
,因此足以识别 typeX
。在子类中覆盖虚拟方法或覆盖方法Xchild
实际上是用新地址定义新方法 Xchild::foo。那么你可能会使用Xchild::foo
to 来表示Xchild
,但不是X
。如果类型 X(准确地说是所有方法)在库 libX 中定义,并且 libY 和 libZ 都在使用 libX(但彼此不知道),并且出于自己的目的定义 getTypeId 使用 X 中的第一种方法来表示它(请注意,这不会对 libX 开发人员强加任何东西),那么他们就 X 是什么类型达成了一致。如果应用程序开发人员使用 libY 获取变体并将其传递给 libZ,则两者都将正确识别提到的类型。
我不是在尝试开发类型转换变量 - 保存为 X 的变量只能读取为 X,即使传递给 myVariant 的实际指针是 Xchild。我对获取给定实例的最顶层类的类型不感兴趣 - 只是用于创建变体的类。
java - 如何在 Java 中打印字符串而不是地址?
我的输出是“[B@b42cbf”,没有错误。
它应该是一个字符串,上面写着“服务器检查”。
如何修复我的代码以输出字符串而不是地址?
我打印对象的代码已经更改了几次,但现在如下。
我的数据包类如下。
我通过 ObjectOutputStream 发送数据包并在 ObjectInputStream 中接收它。用(Packet)将该对象覆盖到一个数据包中。您可以看到它是如何工作的,如下所示。
这里是听者。
c# - C#地址按钮使用字符串
我在处理按钮时遇到问题。我的程序中有很多按钮,并且每个按钮都有一个功能。我得到了最后点击按钮的名称:
然后我想更改按钮的文本:
但我不能使用 ClickedButton 作为按钮的名称。
先感谢您!
c++ - WINAPI ReadProcessMemory 总是相同的地址
我使用 WINAPI 函数从进程(地址:0x58F03C)中读取了一些数据ReadProcessMemory
:
由于每次重新启动进程时地址都会更改,我想知道是否有办法始终获得相同的地址?必须有一个,因为我看到很多能够做到这一点的“培训师计划”。他们如何获得正确的地址值来读取/写入?
目前,我通过使用 扫描一个值来获得它,CheatEngine
并执行下一次扫描以查找更改的值。
谢谢。
linux - 如何找到属于内核的地址
我需要找到内核的地址进行测试,我想从1394防火墙中插入一些代码到内核中,但是我不知道如何找到属于内核的地址?非常感谢
kernel - 没有堆分配内存(内核地址)
当我在内核中找到地址时,我有一个问题。我在内核中插入了一个 hello 模块,在这个模块中,我使用了这个解决方案。
现在我可以使用kmalloc
通过virt_to_phys
.
但我想知道如何找到char mystring[]="this is my address";
. 这不是堆分配的内存,对吧?如何通过某些功能找到它?
PS:我使用了一个工具来转储整个内存,物理地址。
delphi - 获取重载方法的地址位置
如何获取重载的函数/过程/方法的所有地址位置?
例如,Dialogs.MessageDlgPosHelp 有两个不同版本的重载 - 一个没有默认按钮,一个有默认按钮。如何获取这两个函数的地址位置?
c++ - 如何将结构的地址分配给另一个结构?
可以说我有
和2个班。
在第一类的方法中,我创建了一个结构实例:
现在我想将此结构的地址传递给另一个类的构造函数
我想在这里使用 2ndClass 中更改的结构值 - 请阅读下文...
第二类有:
标题:
cp:
这显然会复制 structName。
我的问题是:如何从 structName 为 structName2 分配地址,以便我可以读取和写入结构,然后在离开第二类后在第一类中使用这些值?如何在不使用指向结构的指针的情况下做到这一点?
ios - 通过地址获取符号(符号化二进制,iOS 构建)
我有有趣符号地址的分配工具快照:
我想知道,这个地址在代码中的位置。我有相应的 dSYM 文件。我尝试使用atosym
命令行工具,但它给了我错误的符号(与我的应用程序无关)。
如何得到它?
PS:二进制由XCode 4.3.2构建,代码语言为C++,armv7架构,release构建配置。
c++ - 无论传递了迭代器类型/指针,指向元素的地址
以下函数的最通用语法是什么:
它采用迭代器 myIterator (它可以是原始指针),目标是将指向的对象的地址分配给myIterator
原始指针_ptr
。目前我使用&myIterator[0]
但我意识到只有随机访问迭代器才有运算符 []。
那么是否有适用于所有类型的标准迭代器和指针的语法?