Y sin porfa lo pongo....
La dirección 0x41414149 corresponde a la de la variable "b":
Gracias por la ayuda!
Código [Seleccionar]
(gdb) list
4 void copiar(char* b)
5 {
6 char buffer[500];
7 strcpy(buffer,b);
8 }
9
10
11 int main(int argc, char** argv)
12 {
13 copiar(argv[1]);
(gdb)
14 return 0;
15
16 }
(gdb) disass main
Dump of assembler code for function main:
0x08048384 <+0>: push %ebp
0x08048385 <+1>: mov %esp,%ebp
0x08048387 <+3>: sub $0x4,%esp
0x0804838a <+6>: mov 0xc(%ebp),%eax
0x0804838d <+9>: add $0x4,%eax
0x08048390 <+12>: mov (%eax),%eax
0x08048392 <+14>: mov %eax,(%esp)
0x08048395 <+17>: call 0x8048364 <copiar>
0x0804839a <+22>: mov $0x0,%eax
0x0804839f <+27>: leave
0x080483a0 <+28>: ret
End of assembler dump.
(gdb) disass copiar
Dump of assembler code for function copiar:
0x08048364 <+0>: push %ebp
0x08048365 <+1>: mov %esp,%ebp
0x08048367 <+3>: sub $0x208,%esp
0x0804836d <+9>: mov 0x8(%ebp),%eax
0x08048370 <+12>: mov %eax,0x4(%esp)
0x08048374 <+16>: lea -0x200(%ebp),%eax
0x0804837a <+22>: mov %eax,(%esp)
0x0804837d <+25>: call 0x80482b8 <strcpy@plt>
0x08048382 <+30>: leave
0x08048383 <+31>: ret
End of assembler dump
La dirección 0x41414149 corresponde a la de la variable "b":
Código [Seleccionar]
Program received signal SIGSEGV, Segmentation fault.
0x08048383 in copiar (b=No se puede acceder a la memoria en la dirección 0x41414149
) at ejemplo.c:8
8 }
(gdb) print &b
$2 = (char **) 0x41414149
Gracias por la ayuda!