【发布时间】:2016-09-04 03:35:44
【问题描述】:
-
如何获得程序中数据和代码的虚拟地址?
有人可能会说使用
%u或%p或其他东西。printf("%u", &data); printf("%p", &data);我总是很困惑;哪一个给出正确的地址?两者都提供地址,但有什么区别?
- 有什么方法可以判断给定虚拟地址属于内存的哪一部分?我们能确定它是堆栈地址还是堆地址或其他什么?
【问题讨论】:
-
始终使用
%p作为指针。指针和unsigned int的大小并不总是相同。 -
究竟是什么"p参数应该是一个指向void的指针。指针的值以实现定义的方式转换为一系列打印字符。 “你不明白吗? “u The unsigned int argument ...”有什么不清楚的地方?启用编译器警告并让您的代码在没有任何警告的情况下编译。
-
而 C 甚至没有提到虚拟或物理地址。应用程序无需考虑这一点。
-
每个问题一个问题,请。
-
不要用 C 或 C++ 标签询问操作系统问题,否则你会被搁置。
标签: c++ c linux architecture operating-system