
Сообщение от
Jumb0
Каждый раз новое число выдает , это правильно?
Windwos компиляторы знают магию
Должен был смутить вот этот ворнинг
Bash |
1
| warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘char*’ |
|
и вот результат работы под Linux
Bash |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| $ ./a.out
The character r is at position: -1076076110
*** stack smashing detected ***: ./a.out terminated
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x45)[0xb76ebdd5]
/lib/i386-linux-gnu/libc.so.6(+0xffd8a)[0xb76ebd8a]
./a.out[0x8048542]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb76054d3]
./a.out[0x8048401]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:02 15216130 a.out
08049000-0804a000 r--p 00000000 08:02 15216130 a.out
0804a000-0804b000 rw-p 00001000 08:02 15216130 a.out
09e58000-09e79000 rw-p 00000000 00:00 0 [heap]
b75b8000-b75d4000 r-xp 00000000 08:03 2360244 /lib/i386-linux-gnu/libgcc_s.so.1
b75d4000-b75d5000 r--p 0001b000 08:03 2360244 /lib/i386-linux-gnu/libgcc_s.so.1
b75d5000-b75d6000 rw-p 0001c000 08:03 2360244 /lib/i386-linux-gnu/libgcc_s.so.1
b75eb000-b75ec000 rw-p 00000000 00:00 0
b75ec000-b778b000 r-xp 00000000 08:03 2360223 /lib/i386-linux-gnu/libc-2.15.so
b778b000-b778d000 r--p 0019f000 08:03 2360223 /lib/i386-linux-gnu/libc-2.15.so
b778d000-b778e000 rw-p 001a1000 08:03 2360223 /lib/i386-linux-gnu/libc-2.15.so
b778e000-b7791000 rw-p 00000000 00:00 0
b77a4000-b77a8000 rw-p 00000000 00:00 0
b77a8000-b77a9000 r-xp 00000000 00:00 0 [vdso]
b77a9000-b77c9000 r-xp 00000000 08:03 2360203 /lib/i386-linux-gnu/ld-2.15.so
b77c9000-b77ca000 r--p 0001f000 08:03 2360203 /lib/i386-linux-gnu/ld-2.15.so
b77ca000-b77cb000 rw-p 00020000 08:03 2360203 /lib/i386-linux-gnu/ld-2.15.so
bfda7000-bfdc8000 rw-p 00000000 00:00 0 [stack]
Aborted (core dumped) |
|
Ты копируешь строку "This is a string" (16 символов) в строку "world" (5 символов).