Programación General > C/C++
Comprobar de forma segura el acceso a memoria
Eternal Idol:
Lo ideal es intentar acceder a la memoria y captuarar la excepcion en Windows usando SEH y en Linux tal y como mencionaste al principio del hilo.
http://stackoverflow.com/questions/2693 ... -protectio
marcialre:
Creo que con esto me las apañaré. Muchas gracias por tu tiempo.
Eternal Idol:
De nadas :comp:
marcialre:
El archivo /proc/self/maps (man proc) nos da toda la información necesaria. No es una llamada al sistema, pero por ahora es la solución que ofrece más información.
Como mera curiosidad, intentar generar una tabla como la que ofrece /proc/self/maps a mano es una opción en una arquitectura de 32 bits, pues solo hay que comprobar 1,7·10^7 páginas, pero en una arquitectura de 64 bits, el número de páginas asciende a 4,5·10^15.
Para dar más significado a las cifras supondremos que una comprobación de página (intento de escritura y captura la SIGSEGV) tarda 1 us (microsegundo).
* 1,7·10^7 comprobaciones tardarían 1,7·10^7 x 1·10^-6 = 17 segundos.
* 4,5·10^15 comprobaciones tardarían 4,5·10^15 x 1·10^-6 = 4,5·10^9 segundos, es decir, 170 años.
Eternal Idol:
Lo mejor es acceder, es una comprobacion instantanea, despues podes capturar la excepcion aunque es probable que ocultes el origen de un problema de esa manera.
Navegación
[*] Página Anterior
Ir a la versión completa