Lesson 36 / 38
Undefined Behavior & const
Recognise undefined behaviour such as buffer overflows and use const to help the compiler catch mistakes.
No safety net
C trusts the programmer completely: it does not check array bounds, initialise variables, or verify pointers. Violating these rules is undefined behavior — the program might crash, produce garbage, or appear to "work" until it doesn't.
Two classics: overflow and garbage
Both compile cleanly and may even "seem" to run — that's what makes undefined behavior dangerous.
int arr[5];
arr[5] = 99; // buffer overflow: out of bounds
int x;
printf("%d\n", x); // uninitialised: prints garbageconst is a promise
Marking a parameter const (e.g. void print(const char *s)) tells both the compiler and other readers that the function won't modify it — the compiler then rejects any accidental write.