Esorto a considerare la mia domanda così com'è, non solo per una questione morale, ma perchè in questo modo risulta nettamente più semplice venirmi in aiuto.
Ho messo l'esempio, forse fuorviante, solo perchè immaginavo che qualcuno sarebbe uscito fuori con frasi come "usa semplicemente data".
La situazione è questa: una variabile viene definita nello heap, quindi all'inizio; in un secondo momento, dal medesimo programma e attraverso la funzione descritta, vorrei ottenere l'indirizzo (rimasto invariato nel corso del programma) dei byte allocati all'inizio. Cosa che riuscirei a fare se l'errore di accesso negato non interrompesse il mio ciclo.
Perciò:
Un processo A legge dalla propria memoria.Se un processo A legge dalla propria memoria è un conto, se il processo A deve leggere dalla memoria di un processo B, è un'altra storia. Il codice non potrà essere lo stesso (non so cosa hai scritto in FindDataAddress ma potrebbe non essere corretto).