获取c++中硬编码内存地址的内容

get the content of hardcoded memory address in C++

本文关键字:地址 内存 编码 c++ 获取      更新时间:2023-10-16
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中。