Odpovídáte na názor k článku Koncept nedefinovaného chování v jazyku C3. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.
Huh, ten příklad s coredumpem Céčka, co vrací pointer na stack mě zaujal, jak je to možné (však sice tam bude nějaká blbost, ale page pro stack je namapovaná pořád)
No, tohle mě překvapilo, ono to vrací NULL:
Dump of assembler code for function foo:
0x0000000000401126 <+0>: push rbp
0x0000000000401127 <+1>: mov rbp,rsp
0x000000000040112a <+4>: mov DWORD PTR [rbp-0x4],0x2a
0x0000000000401131 <+11>: mov eax,0x0
0x0000000000401136 <+16>: pop rbp
0x0000000000401137 <+17>: ret
malá modifikace už necoredumpuje - zajímavě řešené UB v céčku.
int* foo()
{
int a = 42;
int *b;
b = &a;
return b;
}
Dump of assembler code for function foo:
0x0000000000401126 <+0>: push rbp
0x0000000000401127 <+1>: mov rbp,rsp
0x000000000040112a <+4>: mov DWORD PTR [rbp-0xc],0x2a
0x0000000000401131 <+11>: lea rax,[rbp-0xc]
0x0000000000401135 <+15>: mov QWORD PTR [rbp-0x8],rax
0x0000000000401139 <+19>: mov rax,QWORD PTR [rbp-0x8]
0x000000000040113d <+23>: pop rbp
0x000000000040113e <+24>: ret
End of assembler dump.
(překládáno s -O0)