获取c++中硬编码内存地址的内容
get the content of hardcoded memory address in C++
double address = 3068770752;
std::string hello = (char *)address;
错误:从'double'类型转换为'char*'类型无效
所以,如果我使用long或int类型,这可以工作,但对于double类型,这不起作用。我该怎么做呢?
谢谢!
编辑:我在c++编程PHP扩展,这是一个自定义函数"get_memory_data(双地址)"的"内容",在PHP中您使用:
<?php
$a = "hello";
$b = get_memaddress($a); //0x123456
$c = hextodec($b); //3068770752
$d = get_memdata($c); //hello
先将其转换为整数:
char * p = reinterpret_cast<char *>(static_cast<uintptr_t>(address));
std::string i_cause_undefined_behaviour(p);
将内存地址存储在双精度类型中是没有意义的,这不是编译器不允许的原因,但它肯定没有帮助。在64位平台上,你需要64位来准确地存储内存地址,但是双精度类型只能保持53位的精度。
如果你想硬编码一个内存地址,你应该把它存储在uintptr_t中。
相关文章:
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 在C++中打印指向不同基元数据类型的指针的内存地址
- CUDA:统一内存和指针地址的更改
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 使用内存地址访问结构的属性值
- 如何读取特定地址的进程内存?
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- 如果 const 不分配内存,为什么我可以获取 const 的地址?
- 将布局映射到内存地址
- 为什么同一个变量的内存地址不同?
- LLVM 传递以在特定地址分配内存
- 无法将内存地址转换为值
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 给定特定内存地址的数组的动态内存分配
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 获取 R 数据帧的内存地址
- 如何配置bazel以运行地址/内存清理器?
- 存储 std::list 元素的地址;内存
- 确定库的地址内存