ERROR DE LECTURA DE MEMORIA (VC++)
Publicado por ifer (52 intervenciones) el 18/05/2004 18:26:27
hola, tengo un puntero hacia un array VARIABLE de estructuras definidas como:
struct MYTYPE{
long int X;
long int Y;
float Score;};
struct MYTYPE *ptrMyPuntero;
incremento el tamaño del array con:
// UnContador es una variable global int que se inicia en 0
UnContador ++;
ptrMyPuntero = (MYTYPE*) realloc( ptrMyPuntero, UnContador * sizeof(MYTYPE) );
// por si no lo saben realloc funciona como malloc si el punero es nulo.
la idea es obtener la estructura con mayor score (fScore) al inicio
de la lista, asi que hice lo usual:
struct TYPE_FACE *ptrPuntero_1 = NULL;
struct TYPE_FACE *ptrPuntero_2 = NULL;
// aca apunto a primer elemento en la posicion 0
ptrPuntero_1 = ptrMyPuntero;
// busco desde la posicion 1
for ( a = 1; a <= UnContador -1; a++ ) {
ptrPuntero_2 = ptrMyPuntero;
ptrPuntero_2 += (a * sizeof(MYTYPE));
if ( ptrPuntero_1->Score < ptrPuntero_2->Score )
ptrPuntero_1 = ptrPuntero_2;
}
// pongo el contenido de la estructura elegida a la posicion 0
ptrMyPuntero->X = ptrPuntero_1->X;
ptrMyPuntero->Y = ptrPuntero_1->Y;
ptrMyPuntero->Score = ptrPuntero_1->Score;
// pongo a null los punteros locales (por si acaso)
ptrPuntero_1 = NULL;
ptrPuntero_2 = NULL;
luego de mostrar el resultado libero memoria:
if (ptrMyPuntero!=NULL) {
free (ptrMyPuntero);
ptrMyPuntero = NULL;
UnContador = 0;
}
la corr
struct MYTYPE{
long int X;
long int Y;
float Score;};
struct MYTYPE *ptrMyPuntero;
incremento el tamaño del array con:
// UnContador es una variable global int que se inicia en 0
UnContador ++;
ptrMyPuntero = (MYTYPE*) realloc( ptrMyPuntero, UnContador * sizeof(MYTYPE) );
// por si no lo saben realloc funciona como malloc si el punero es nulo.
la idea es obtener la estructura con mayor score (fScore) al inicio
de la lista, asi que hice lo usual:
struct TYPE_FACE *ptrPuntero_1 = NULL;
struct TYPE_FACE *ptrPuntero_2 = NULL;
// aca apunto a primer elemento en la posicion 0
ptrPuntero_1 = ptrMyPuntero;
// busco desde la posicion 1
for ( a = 1; a <= UnContador -1; a++ ) {
ptrPuntero_2 = ptrMyPuntero;
ptrPuntero_2 += (a * sizeof(MYTYPE));
if ( ptrPuntero_1->Score < ptrPuntero_2->Score )
ptrPuntero_1 = ptrPuntero_2;
}
// pongo el contenido de la estructura elegida a la posicion 0
ptrMyPuntero->X = ptrPuntero_1->X;
ptrMyPuntero->Y = ptrPuntero_1->Y;
ptrMyPuntero->Score = ptrPuntero_1->Score;
// pongo a null los punteros locales (por si acaso)
ptrPuntero_1 = NULL;
ptrPuntero_2 = NULL;
luego de mostrar el resultado libero memoria:
if (ptrMyPuntero!=NULL) {
free (ptrMyPuntero);
ptrMyPuntero = NULL;
UnContador = 0;
}
la corr
Valora esta pregunta


0