Foros del Web » Programación para mayores de 30 ;) » C/C++ »

La variable no contiene su dato destinado

Estas en el tema de La variable no contiene su dato destinado en el foro de C/C++ en Foros del Web. Hola gente Tengo un pequeño problema con mi código, les explico un poco El método se encuentra en una dll en visual c++ 6.0, pero ...
  #1 (permalink)  
Antiguo 11/12/2007, 17:13
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 10 meses
Puntos: 50
Pregunta La variable no contiene su dato destinado

Hola gente

Tengo un pequeño problema con mi código, les explico un poco

El método se encuentra en una dll en visual c++ 6.0, pero les presento este trozo de código

Código:
	/*INICIAMOS EL PROCESO DE ENCRIPTACION*/
	/*iniciamos creando las llaves*/
	BYTE _llave1[8];
	BYTE _llave2[8];
	memcpy(_llave1,"TESTKEY1",8);
	_llave1[8] = NULL;
	memcpy(_llave2,"TESTKEY2",8);
	_llave2[8] = NULL;
	/*CREAMOS EL OBJETO QUE VA A ENCRIPTAR*/
	CALXCRYPTO crypto;
	/*creamos el objeto que va a contener el objeto cifrado*/
	BYTE *cifrado=(BYTE*)malloc(sizeof(0));
	memset(cifrado,0,8);
	BYTE *descifrado=(BYTE*)malloc(sizeof(0));
	memset(descifrado,0,8);
					
	UCHAR *temporal = (UCHAR*)malloc(sizeof(0));
	UCHAR *GuardaDefinitivo = (UCHAR*)malloc(sizeof(16));
	memset(temporal,0,8);
	memset(GuardaDefinitivo,0,16);

	int objGuarda = -1;
	int cuenta = -1;
	int carga = -1;
	int xxx = strlen(cadena);
	long sectores_t = 4;
Cuando lo ejecuto paso a paso, si se dan cuenta, la variable "sectores_t" la tengo inicializada a 4 pero cuando lo ejecuto paso a paso, a esa variable se le asigna el valor de 38, hay alguna razón por la cual suceda esto, espero sus respuestas y gracias...
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #2 (permalink)  
Antiguo 13/12/2007, 03:03
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: La variable no contiene su dato destinado

Me parece que no podemos saberlo sin ver el codigo POSTERIOR a este o estas comprobando su valor antes de inicializarla ... si no tiene el valor esperado muy probablemente sea por estar sobreescribiendo sin querer su valor.

El codigo no tiene ningun sentido por cierto, el sizeof de un numero literal como esos (0 o 16) sera siempre 4 - int - y despues escribis sobre los 8/16 bytes siguientes ... tenes que pasar un valor entero a malloc que tenga sentido (0 no lo tiene). Tampoco podes acceder al elemento 8 de un array de 8 elementos ya que estos comienzan por 0 (0 a 7 en este caso). Me imagino que sera algun error de este tipo el que se manifieste en sectores_t ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 13/12/2007, 09:07
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 10 meses
Puntos: 50
Re: La variable no contiene su dato destinado

Hola Enternal, gracias por responder, usted siempre tan atento en todo

Cita:
Iniciado por Eternal Idol Ver Mensaje
...

El codigo no tiene ningun sentido por cierto, el sizeof de un numero literal como esos (0 o 16) sera siempre 4 - int - y despues escribis sobre los 8/16 bytes siguientes ... tenes que pasar un valor entero a malloc que tenga sentido (0 no lo tiene).
Fíjate que el problema ya lo solucione, ¿cómo?, bueno, lo que hice fue colocar todo el código que tengo de ese método en otro método con otro nombre, y comenzó a funcionar, quien sabe a que se deba, si es un error de mi depurador que ya se corrompió u otra cosa, pero quedo solucionado, ya que dentro del error que hago mención me hacía algunos más, como por ejemplo, la variable xxx me la inicializaba a -1 y esa variable la tengo colocada en un ciclo for:

Código:
for (int _x = 0; _x < xxx; _x+=16)
...
pero, era lógico que no entrara al ciclo y aún así entraba y ni siquiera sabía por que, hasta que cambie el código

Cita:
Iniciado por Eternal Idol Ver Mensaje
... Tampoco podes acceder al elemento 8 de un array de 8 elementos ya que estos comienzan por 0 (0 a 7 en este caso). Me imagino que sera algun error de este tipo el que se manifieste en sectores_t ...
Con respecto a esto, el sistema me debería de mandar el error del índice fuera de la matriz, lo cual no me lo manda, pero lo que hice fue quitar esas lineas por si acaso y los malloc's los inicialice todos a los valores que necesito guardar en estos y funciona todo ok.

Muchas gracias por tu ayuda.
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #4 (permalink)  
Antiguo 13/12/2007, 10:58
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: La variable no contiene su dato destinado

Cita:
Iniciado por erick_arcini Ver Mensaje
Hola Enternal, gracias por responder, usted siempre tan atento en todo
Se hace lo que se puede

Cita:
Iniciado por erick_arcini Ver Mensaje
Fíjate que el problema ya lo solucione, ¿cómo?, bueno, lo que hice fue colocar todo el código que tengo de ese método en otro método con otro nombre, y comenzó a funcionar, quien sabe a que se deba, si es un error de mi depurador que ya se corrompió u otra cosa, pero quedo solucionado, ya que dentro del error que hago mención me hacía algunos más, como por ejemplo, la variable xxx me la inicializaba a -1 y esa variable la tengo colocada en un ciclo for:
Una solucion no muy robusta

Cita:
Iniciado por erick_arcini Ver Mensaje
Con respecto a esto, el sistema me debería de mandar el error del índice fuera de la matriz, lo cual no me lo manda, pero lo que hice fue quitar esas lineas por si acaso y los malloc's los inicialice todos a los valores que necesito guardar en estos y funciona todo ok.
No realmente, C/C++ no tienen comprobacion de limites en arrays asi que en compilacion no va a haber ningun error. Despues cuando accedas dependera de la suerte ya que en realidad estaras accediendo a un byte que no pertenece a tu array y puede ser cualquier cosa (normalmente tu variable siguiente).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:47.