Programación General > Visual C++
Problemas Al Convertir Tipos
SteelX:
Es solo un ejemplo:
Ademas si quiere hacerlo mas seguro que use un array.
el ejemplo lo saque de :
http://www.codeproject.com/cpp/data_conversions.asp
aun asi no he tenido problemas con ese tipo de inicializacion. con MFC claro.
Eternal Idol:
--- Cita de: "JuanK" --- Pero este codigo que has colocado es muy peligroso y en alguncos compiladores , y segun las opciones de compilacion que establescas , nisiquiera se dejara compilar.
1- le asignas una cadena a un puntero, no una direccion de memoria
2- no has reservado memoria para donde apunte el puntero
3- la cadena no termina en nulo
--- Fin de la cita ---
Todo eso que acabas de decir es incorrecto lamentablemente, no es peligroso en lo mas minimo.
1. Es un puntero, te dejo el codigo generador por VC++:
mov dword ptr [ebp-4],offset $SG271
Ahi podemos ver que se usa una variable local (en pila, ebp-4) y esta apunta a una direccion.
2. Si investigamos mas dentro del ejecutable vemos que esa direccion se encuentra en la seccion .rdata (read only data) y por lo tanto el loader se encargara de reservar su memoria como hace con todas las secciones del ejecutable (tal como co la de codigo).
3. Si seguimos investigando podemos "leer" los bytes de esa seccion y vemos que esta cadena al ser de C por defecto termina en 0.
JuanK:
OK buen punto, eso en visual C++ pero en otros?
:huh: ajajaja aunque esta claro que esta usando VC++ por lo del MFC... o al menos es lo mas probable. :rolleyes:
Eternal Idol:
--- Cita de: "JuanK" --- OK buen punto, eso en visual C++ pero en otros?
--- Fin de la cita ---
Esto lo compila cualquier compilador de C y funciona perfectamente:
--- Código: Text --- #include <stdio.h> void main(){ char *edad = "99"; printf("%s\r\n", edad);}
JuanK:
pero el codigo que genera en otros compiladores?
lo que sucede es que he tenido problemas con eso trabajando en algunos proyectos y he tenido que cambiar los flags de compilacion para que me permititeran hacer ciertas cosas :rolleyes:
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa