Cuando hace un año me compré un fantástico AMD64 (no puedo estar más contento), me encontré con una situación curiosa debido a que tenía código mal escrito. El problema está en las funciones que devuelven una posición de memoria (array, p.e.) pero que no tienen el prototipo definido (o no se ha metido el include), compilando sin opciones que eviten la compilación ante falta de prototipos. Entonces si tienes la función:
int * genera_array( int tamanyo);
pero no la prototipas, en 32 bit "no pasa nada", pero en 64 bit tienes problemas, porque por defecto una función sin prototipo en C devuelve int que ocupa 32bit, mientras que la dirección de memoria en 32bit ocupa 32 bit; si bien en 64bit ocupa 64bit. En 64bit se carga la mitad de la dirección de memoria y te devuelve una dirección inválida :-P
Perseguir este tipo de situaciones es el pequeño esfuerzo que he tenido que hacer para portar el software a 64bit.
-- _____________ Un espresso? \____
Puntos de inicio:
3
puntos
Modificador extra 'Interesante'
0
Total marcador:
3
1 respuesta por debajo de tu umbral de lectura actual.
Falta de prototipos
(Puntos:3, Interesante)( http://barrapunto.com/ | Última bitácora: Lunes, 24 Noviembre de 2008, 09:35h )
pero no la prototipas, en 32 bit "no pasa nada", pero en 64 bit tienes problemas, porque por defecto una función sin prototipo en C devuelve int que ocupa 32bit, mientras que la dirección de memoria en 32bit ocupa 32 bit; si bien en 64bit ocupa 64bit. En 64bit se carga la mitad de la dirección de memoria y te devuelve una dirección inválida :-P
Perseguir este tipo de situaciones es el pequeño esfuerzo que he tenido que hacer para portar el software a 64bit.
_____________
Un espresso? \____