Is using an invalid pointer value legal in C?

后端 未结 3 746
长发绾君心
长发绾君心 2021-01-14 19:59

The following code is undefined behavior in C++ (although it will work okay on almost any widely used implementation):

int* pointer; //uninitialized - likely         


        
相关标签:
3条回答
  • 2021-01-14 20:36

    It's undefined behavior in C as well because on certain architectures, loading an invalid pointer into a register triggers a hardware fault.

    See Is storing an invalid pointer automatically undefined behavior?

    0 讨论(0)
  • 2021-01-14 20:41

    Not legal. Code like this will compile, but with warnings. Don't ignore them. Don't write code like this. It can affect your system in many not so nice ways. My university teacher once told us he managed to erase one machine's BIOS using code with undefined behaviour.

    0 讨论(0)
  • 2021-01-14 20:49

    It is undefined behavior in C99. The value of pointer is "indeterminate" (6.7.8.10) and an indeterminate value can be a trap value that causes undefinedness when used.

    0 讨论(0)
提交回复
热议问题