Bus errors are rare nowadays on x86 and occur when your processor cannot even attempt
the memory access requested, typically:
using a processor instruction with an address that does
not satisfy its alignment requirements.
Segmentation faults occur when accessing memory which
does not belong to your process, they are very common and
are typically the result of:
using a pointer to something that was deallocated.
using an uninitialized hence bogus pointer.
using a null pointer.
overflowing a buffer.