В современных флешках, которые на гигабайты, используется хранение нескольких битов на ячейку. То есть если в простейшем случае, когда храниться 1 бит, нужно просто отличить 0 и 1, то в случае 2 бит - нужно различить 4 разных уровня заряда. В случае 3 бит - уже 8, и т.д. Естественно, в этом случае достаточно совсем небольшой утечки заряда или неточности измерения чтобы исказить информацию. Кроме того, даже в новой с завода флешке наверняка будут битые ячейки.
По этому в SSD/SD/USB флешках обязательно есть контроллер, который специальным образом записывает информацию с кодами коррекции, позволяющими восстановить информацию при искажении нескольких битов, если их число в блоке не превысит возможности коррекции, а также выравниванием износа. Этот же контроллер может сам перезаписать или перенести в другое место сектор, если он читается с битовыми ошибками, но их число не превышает возможности коррекции. Этот же контроллер в случае наличия каких-то критических ошибок может перевести девайс в ридонли чтобы дать возможность спасти оставшуюся инфу, т.к. дальнейшая запись может его добить окончательно.
Касаемо обновления информации просто при подаче питания - в SSD наверняка есть такая фича, т.к. там самые умные контроллеры, а вот на счет SD/USB флешек вопрос уже дискуссионный. Контроллеры в них проще, а самое главное - это съемные устройства, т.е. их могут выдернуть в любой момент. Если это произойдет во время записи - можно или запороть сектор или вообще получить кирпич. Кстати по моему опыту с USB/SD флешки чаще всего мрут именно софтово - т.е. слетает прошивка или какие-то внутреннии таблицы. Иногда можно найти для конкретной флешки тулзу от производителя, которой можно ее восстановить.
В случае же картриджей все гораздо проще. Используемая в них флеш читается приставкой напрямую без всяких контроллеров, однако там и не используется хранение нескольких бит на ячейку, информация может храниться десятилетиями. Но и нет никаких кодов коррекции, 1 неудачно искаженный бит может окирпичить картридж.