Zdravim neviete niekto ako mozem zistit offset z dakej adresy pamete?
(Ide mi hlavne o vzdialenost od zaciatku pamete)
Vopred dakujem za odpoved.
C++ Offset z pamete
Problém je, že OS (teraz hovorím hlavne o Windows, ale platí to aj pre Linux a iné OS) alokuje pamäť podľa potreby a tá pamäť na seba nemusí najako nadväzovať.
Teda ak chceš vedieť, akú pamäť ten program používa, musíš použiť nejaké funkcie, ktoré ti vrátia informácie o pamäti. Napr. môžeš použiť funkciu VirtualQueryEx. Začneš na adrese 0 a postupne budeš adresu posúvať podľa toho, akú veľkosť regiónu ti tá funkcia vráti (bude ťa zaujímať hlavne pamäť, ktorá nemá stav MEM_FREE).
Inak potom by si mohol kontrolovať aj to, či sa do tej pamäte dá zapisovať (ak sa tie premenné môžu aj meniť).
Ak vieš, že tie premenné sú v dátovom segmente, tak veľkosť tej prehľadávanej pamäte môžeš výrazne zmenšiť, ale ak nevieš, kde tá premenné môže byť, musíš prehľadávať aj stack a heap.
Teda ak chceš vedieť, akú pamäť ten program používa, musíš použiť nejaké funkcie, ktoré ti vrátia informácie o pamäti. Napr. môžeš použiť funkciu VirtualQueryEx. Začneš na adrese 0 a postupne budeš adresu posúvať podľa toho, akú veľkosť regiónu ti tá funkcia vráti (bude ťa zaujímať hlavne pamäť, ktorá nemá stav MEM_FREE).
Inak potom by si mohol kontrolovať aj to, či sa do tej pamäte dá zapisovať (ak sa tie premenné môžu aj meniť).
Ak vieš, že tie premenné sú v dátovom segmente, tak veľkosť tej prehľadávanej pamäte môžeš výrazne zmenšiť, ale ak nevieš, kde tá premenné môže byť, musíš prehľadávať aj stack a heap.