El for() no reconoce las marcas

Iniciado por krosty123, 17 Septiembre 2010, 22:10 PM

0 Miembros y 1 Visitante están viendo este tema.

krosty123

Hola que tal, el problema es el siguiente, cuando el programa se ejecuta y hace un for en busca de unas marcas ( '*' y '°') este no las encuentra.
Depure el programa y lo que me salio fue: "Se ha producido una violacion de acceso a memoria", el contador i estaba en: "16444".
El codigo de busqueda es el siguiente:



for(int i=0;i<tamanio;i++)
 {
         if(buffer[i] == '*' && buffer[i+1] == '*')
         {
               exe1 = buffer+i+2;
               a = i+2;
               break;        
         }


Y el codigo donde se agregan las marcas es el siguiente:



void crearFichero(char* buffer1, int tamanio1, char* buffer2, int tamanio2)
{
 char info[1];
 char info2[1];
 info[0] = '*';
 info[1] = '*';
 info2[0] = '°';
 info2[1] = '°';
 CopyFile("main.exe","bindedm.exe",TRUE);
 ofstream escritura1("bindedm.exe", ofstream::binary | ofstream::app);
 escritura1.write(info, strlen(info));
 escritura1.write(buffer1, tamanio1);
 escritura1.write(info2, strlen(info2));
 escritura1.write(buffer2, tamanio2);
 escritura1.close();
}


Aver quien me da una mano.
Gracias

kondrag_X1

haber te da un error por qe la array se sale de tamaño en "buffer[i+1] == '*' " por que cuando llega al ultimo elemento tu le sumas uno en la posicion (i) y te sales fuera de la array. Lo que veo raro es que el error no sea array no found o algo parecido

krosty123

Mmm no, probe poniendo solo if buffer == '*' y sale exactamente el mismo error, cuando i llega a 16.444 crashea.
Saludos