Re: the same memory location can have different values
On 7 Jun., 12:23, Floare Augustin Theodor
<floare.augustin.theo...@gmail.com> wrote:
I listen to your advice and I've looked at the generated assembler
code, here it is:
=85.....................
[snip]
From this assembler code the thoughts that comes are:
a. everywhere the constant ct is used, its value, 10, is replaced by
compiler (int a = ct + 1; becomes int a = 11;)
Yes. That optimisation is perfectly valid.
b. the address of ct itself resides in the stack and that memory
location can change its value (initial value is 10 than becomes 332)
This is in no way guaranteed. The compiler is free to place the
variable whereever it wants to, and a newer compiler or a change in
compiler settings might cause it to do so.
c. the =93const=94 property is not present in the object code
That property is a C++ concept and only exists in the C++ source-code.
d. there is no =93undefined behavior=94 in the assembler code that can go
to a crash
If you come to assembler, I doubt you would experience "undefined
behaviour" ever, and again what we are discussing here is C++undefined
behaviour, and that kind of behaviour can never exist in assembly
code.
/Peter