Extracción de bits de un espacio de memoria

Elias
02 de Agosto del 2010
Holas,

Tengo una dificultad, resulta que tengo un puntero que tiene la dirección de una zona de memoria (por ejm,64 By), del cual quiero extraer datos, 2 Bytes, cada vez. Cómo podria recorrer todo el espacio de memoria, y como podria saber cuando terminar ?

Como saber el tamano total de bytes que tiene dicho espacio de memoria ?

Capitan Kirk
16 de Agosto del 2010
Prueba, por ejemplo, con esto:

void *ptr1;
/*
ptr1 sería tu puntero original, lo he puesto como void pero el tipo es indiferente
*/
short *ptr2, valor;
int i, num_elementos;

// ... (tu código) ...
ptr2 = (short *)ptr1;
// Aquí pongo el bucle de lectura
for (i=0; i<num_elementos; i++)
{
valor = *ptr2;
// Aquí haría el tratamiento de valor
ptr2++;
}

Cada vez que incremento el puntero ptr2, apunto al siguiente grupo de 2 bytes (estoy suponiendo un tipo short de 2 bytes, pero compruébalo en tu sistema).

He puesto la lectura con un bucle for por simplificar el ejemplo. En principio, podrías recorrer toda la memoria disponible, así que el cuándo terminar depende de tu aplicación: Bloque de memoria de tamaño conocido (sabes cuántos elementos tienes que leer), o bien que se cumpla alguna condición para finalizar la lectura.

En cuanto al número total de bytes del espacio de memoria, en principio no hay manera de saberlo, excepto si lo has reservado tú mismo, ya sea estáticamente al declarar una variable o array, ya sea dinámicamente durante la ejecución del programa.

Saludos,