Yes, that you have absolutely no idea how the data is stored internally (there could be padding or not) and even changing compiler settings could override that (which is why some compilers have #pragmas to override this).
That example still makes a mistake though as it completely ignores the endianess of the system. Save a file in a little endian system then try to load it in a big endian system... you won't like it (this only matters for portability reasons, but there's not much of an excuse to avoid it). Also you the size of the variable types may change (e.g. a common recent case would be 32-bit vs 64-bit). You'll need to write individual bytes to work around that (then at least you can be guaranteed in which order they'll be stored in the file and with what size).
EDIT: oh, also even if none of the above was an issue, what if you change the object for whatever reason, e.g. to add a new variable or something? If you save the object as-is, suddenly old saves won't be usable anymore.