Merge pull request #21 from rofrol/patch-5

Uninitialized _y has value -1
This commit is contained in:
droogmic
2020-04-27 18:47:09 +02:00
committed by GitHub

View File

@@ -87,15 +87,15 @@ $1 = 42
$2 = (i32 *) 0x10001fdc $2 = (i32 *) 0x10001fdc
(gdb) print _y (gdb) print _y
$3 = 134219052 $3 = -1
(gdb) print &_y (gdb) print &_y
$4 = (i32 *) 0x10001fd8 $4 = (i32 *) 0x10001fd8
``` ```
As expected, `x` contains the value `42`. As expected, `x` contains the value `42`.
`_y` however, contains the value `134219052` (?). `_y` however, contains the value `-1` (?).
Because `_y` has not been initialized yet, it contains some garbage value. Because `_y` has not been initialized yet, it contains `-1`.
The command `print &x` prints the address of the variable `x`. The command `print &x` prints the address of the variable `x`.
The interesting bit here is that GDB output shows the type of the reference: The interesting bit here is that GDB output shows the type of the reference:
@@ -108,7 +108,7 @@ Instead of printing the local variables one by one, you can also use the `info l
``` ```
(gdb) info locals (gdb) info locals
x = 42 x = 42
_y = 134219052 _y = -1
``` ```
OK. With another `step`, we'll be on top of the `loop {}` statement: OK. With another `step`, we'll be on top of the `loop {}` statement: