この3種類を、集積度の面で比べてみると、データ線とメモリセルを
つなぐためのコンタクトホールは、 (a)と(b)では2ビットあたりで
1個必要ですが、 (c)では1ビットあたりで1個必要であるため、
(c)は集積度が下がってしまうという欠点はあります。
この考え方をさらに進めると、複数のトランジスタでコンタクトを使わずに並べてしまう、いわゆるNAND型のマスクROMを作ることができます。これは、N個の値を記憶しておくトランジスタと、これらをまとめて選択する1個トランジスタからなります。このうち、値を記憶しておくトランジスタでは、それぞれに記憶するべき値に応じて、しきい値を正にする('1')か負にする('0')か、をトランジスタを作るときのイオン打ち込みの段階で決めておきます。
読み出し時には、データ線Djをプリチャージした後で、N本の ワード線を、読み出し対象のワード線のみを0に、他をすべて1とした 状態で、ブロック選択線を1にしてみると、読み出し対象の メモリセルのトランジスタ以外はすべてONになります。 このとき、読み出し対象のメモリセルのトランジスタのしきい値が 負であればこのトランジスタもONですから、データ線Djは 放電されて0になりますが、しきい値が正であれば、 このトランジスタはOFFですから、データ線Djは放電されずに 1となるわけで、結果として読み出し対象のメモリセルの値が 読み出せたことになります。 このような、いわゆるNAND型のマスクROMは、N個のトランジスタを コンタクトなしに並べられますから、集積度を非常に高くできます。 ただし読み出し時にN個のトランジスタの直列抵抗でデータ線Djの 電荷を放電することになりますから、読み出し速度が 遅くなってしまうという欠点もあります。
(「VLSI工学-基礎・設計編-」(岩田、コロナ社)p.82より) 
書き込み、すなわち浮遊ゲートへの電子の注入は、 S-D間に高い電圧を加え、ドレイン接合部分での電子なだれ現象、 またはホットエレクトロンと呼ばれるエネルギーの高い電子によって 行います。 また消去は、紫外線を与えて、浮遊ゲート内の電子を チャネル領域に逃がすことで行います。 (そのため、このタイプのEPROMをUV-EPROMと呼ぶ) 浮遊ゲートにたまった電子は、10年程度は保持されます。 (ちなみに、昔のファミコンの頃は、数が出る人気ゲームはマスクROMで、 数がでない、いわゆるクソゲーはEPROMが使われていたようです)
このUV-EPROMは、消去のために紫外線をあてなければならない、 という欠点があります。 そこで、消去も電気的に行うことができるようにした、 EEPROM (Electrically EPROM)が考案されました。 これは、浮遊ゲートとドレイン領域の間の酸化膜を 10nm程度と非常に薄くし、ゲートに10V程度の高い電圧を 加えることで、この部分に、量子現象であるトンネル現象によって 電子を注入したり逃がしたりすることができるようにしたものです。
(「VLSI工学-基礎・設計編-」(岩田、コロナ社)p.83より) 
フラッシュメモリは、EEPROMで必要だった選択トランジスタを、 複数の浮遊ゲートMOSトランジスタでまとめたものです。 これにより、1ビットごとの独立した書き込み・消去は できなくなりますが、1ビットが1つの浮遊ゲートMOSトランジスタで 構成できるため、大容量化に向いています。 消去は、1ビットごとではなくて何ビットかまとめて行わなければ ならないことから、フラッシュ(flash)メモリ、と呼ばれます。 フラッシュメモリの構成には、大きく分けてNOR型とNAND型が ありますが、一般にNOR型のほうが高速・低密度、 NAND型のほうが低速・高密度となります。