2014-11-26 4 views
0

Я хотел спросить, могу ли я использовать функцию mtrace(), чтобы моя программа регистрировала физические адреса распределений памяти. Кроме того, если я использую mtrace() и могу показать адреса, используемые для выделения, это покажет мне адреса в физической или виртуальной памяти?Журнал распределения физической памяти Mtrace

Заранее спасибо.

Edit: Итак, я запускаю следующий код:

#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 

ли адреса, показанный в виртуальной памяти или в физической памяти?

ответ

0

Все адреса, находящиеся в приложениях пользовательского пространства, включая те, которые показаны mtrace(), являются адресами виртуальной памяти.