我想问我是否可以使用 mtrace() 函数来让我的程序记录内存分配的物理地址。另外,如果我使用 mtrace() 并且能够显示用于分配的地址,这会显示物理或虚拟内存中的地址吗?
先感谢您。
编辑:好的,所以我运行以下代码:
#include <stdlib.h>
#include <mcheck.h>
int main(void) {
mtrace(); /* Starts the recording of memory allocations and releases */
int* a = NULL;
a = malloc(sizeof(int)); /* allocate memory and assign it to the pointer */
if (a == NULL) {
return 1; /* error */
}
free(a); /* we free the memory we allocated so we don't have leaks */
muntrace();
return 0; /* exit */
}
它给了我以下输出:
=Start
@ ./a.out:[0x80484a6] + 0x9738378 0x4
@ ./a.out:[0x80484c4] + 0x9738378
= End
地址是显示在虚拟内存还是物理内存中?