15得票3回答
在Swift字典中,引用作为键的问题

字典键需要符合Hashable协议:class Test {} var dictionary = [Test: String]() // Type 'Test' dies not conform to protocol 'Hashable' class Test: NSObject {} v...

15得票1回答
使用Golang读取随机内存位置

晚上好, 我一直在尝试构建一个扫描内存值的golang应用程序,但是我很难理解如何寻址特定的内存位置。我知道在访问应用程序内存时可以使用*变量名来进行解引用并获取地址位置,但是如何提供地址位置并将其值打印到屏幕上或获取下一个分配的任意大小的对象从RAM并打印它的值呢? 提前感谢您所愿意分享...

15得票2回答
理解虚拟地址和虚拟地址空间

我读到这样一段话:"当程序执行像:MOV REG,1000这样的指令时,它是将内存地址1000的内容复制到REG中。地址可以使用索引、基地址寄存器、段寄存器和其他方式来生成。 这些程序生成的地址被称为虚拟地址,并形成了虚拟地址空间。" 请问有人能解释一下,(这些程序生成的地址被称为虚拟地址...

15得票2回答
使用不同的内存字长(Knuth的MIX架构)的"char*"

原始的MIX架构采用6位字节,内存被表示为31位的字(5个字节和一个符号位)。作为一种思维练习,我想知道在这种环境下C语言如何运作,鉴于以下条件: char至少有8位(C99规范的附录E) C99规范第6.3.2.3节(“指针”)第8段说:“当将指向对象的指针转换为指向字符类型的指针时,结...

15得票3回答
我在C语言中对(char*)元素的数组进行了三次循环,为什么第三次失败了?

在尝试用C语言遍历一个字符串数组的过程中,我编写了下面这个小程序:#include <stdio.h> #include <stdlib.h> #include <string.h> typedef char* string; int main() {...

14得票4回答
C/C++指针是否保持绝对内存地址,还是相对于应用程序或模块?

比如,如果我在主应用程序中声明一个函数,并将其指针通过动态加载的库(使用Linux下的dlopen或Windows下的LoadLibrary)传递,使用获取到的符号参数(分别通过dlsym或GetProcAddress),然后尝试调用该函数,它会正常工作吗? 如果从一个动态加载的库向另一个动...

14得票3回答
free()如何影响堆上的内存地址?

此作业要求我们使用malloc()为两个int类型变量分配内存(命名为var1和var2),打印每个变量的地址(在堆栈上指针的地址和堆上的地址),然后使用free()释放var1,再次打印地址,然后在堆上为var1分配另一个空间,并第三次打印地址。我相信教师想要向我们展示 var1 的堆地址应...

14得票2回答
使用模块基地址读取内存

如何使用模块基址读取内存? 例如,如何读取这段内存:"winCap64.dll"+0x123456 + offsets。 我在研究后添加了一个示例代码,但我仍然无法在C#中读取任何内容。但是地址绝对没有问题,因为当我在作弊引擎上加上它们时,它们返回给我正确的值。 编辑:添加了示例代码。 ...

14得票4回答
在不是地址/指针的值上使用LEA?

我试图理解地址计算指令的工作原理,特别是使用 leaq 命令时。但当我看到使用 leaq 执行算术运算的示例时感到困惑。例如下面的C语言代码:long m12(long x) { return x*12; } 在汇编语言中,leaq (%rdi, %rdi, 2), %rax salq $2,...

14得票7回答
为什么取一个临时变量的地址是非法的?

我知道下面写的代码是不合法的void doSomething(std::string *s){} int main() { doSomething(&std::string("Hello World")); return 0; } 原因是我们不能获取临时对象的地址。...