繁体   English   中英

如何在Visual C ++中读取内存地址?

[英]How to read a memory address in Visual C++?

在ANSI CI中可以执行以下操作:

const long *address = 0x00000002;  /* Example address */
printf("0x00000002 -> %ld", *address);

控制台将显示该内存地址的内容。 但是VC ++中的代码抛出:

错误C2440:“正在初始化”:无法从“ int”转换为“ const long *”

是否有从VC ++读取内存地址的本地方法,或者我必须调用API?

提前致谢。

您将地址表示为整数。 您需要将其强制转换为适当类型的指针:

const long *address = reinterpret_cast<const long *>(0x00000002);

并且您需要在标准C ++中执行该转换。 我不确定为什么您认为可以在标准C ++中省略强制类型转换。

当然,当您运行代码时,会遇到分段错误。

要设置该地址,请使用类似

const long* address = (const long*) 0x0000002;  // C style

要么

const long* address = 
   reinterpret_cast<const long*>(0x000002); // C++ style

顺便说一句,在大多数系统上,0x0000002不是有效的地址(在应用程序的常规虚拟地址空间中)。 请参阅有关虚拟内存虚拟地址空间的 Wikipage。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM