This line does not produce the correct address of your Radio_Data
object:
file.write((char *)&listIter, sizeof(Radio_Data));
You should dereference the iterator before taking the address of the object, like this:
file.write((char *)&(*listIter), sizeof(Radio_Data));
Since *listIter
evaluates to a reference to the object pointed to by the iterator, &(*listIter)
evaluates to a pointer to the corresponding Radio_Data
object.