Tengo el siguiente codigo:
#include <stdio.h>
int main()
{
char hola[]="AAAA";
printf(hola);
}
Bueno , segun entendi , si no lo especificamos de la manera printf("%s",hola) , podriamos pedir direcciones de memoria q estan en la pila hasta llegar a la de nuestra variable , de esta forma
#include <stdio.h>
int main()
{
char hola[]="AAAA %p %p %p %p %p";
printf(hola);
}
Esto nos va a dar 5 direcciones de memoria , si no encontramos 0x41414141(AAAA) seguimos poniendo mas %p , hasta encontrarlas.
Hasta ahi todo bien. Encuentro 0x41414141 .Despues de ahi nose q mas hacer.
Duda :
No entiendo , cambio el valor de una direccion en memoria o estoy metiendo la direccion de memoria(Supongo q es la ultima).
Cita de: jednak en 31 Julio 2013, 13:16 PMDuda :
No entiendo , cambio el valor de una direccion en memoria o estoy metiendo la direccion de memoria(Supongo q es la ultima).
Estas reservando espacio en la pila, luego copiando la direccion de 0x41414141 en ese espacio que reservaste.
Ejemplo:
pushq $0x6001e0 ; direccion de 0x41414141
addb $0x2, (%rsp)
popq %rdi
Dejaria apuntando a 0x4141 en rdi.
La verdad no entendi muy bien tu duda, si no es eso reformula de nuevo la pregunta.
Un saludo.