Undefined behavior is code that is non-portable or erroneous and whose behavior is unpredictable and therefore can not be relied on. To be clear, implementation defined behavior is behavior which is not specified by the standard but the implementation should document.
The standard does not define how the implementation should deal with undefined behavior and in fact the implementation could optimize out undefined behavior and still be compliant.
A segmentation fault is an implementation defined behavior.