1. A method for programming a memory structure, the memory structure comprising a plurality of memory cells where each memory cell has a substrate, a source located on the substrate, a drain located on the substrate, a charge storage device located between the source and the drain, and a gate located on the charge storage device and between the source and the drain, the plurality of memory cells comprising a first memory cell and a second memory cell located on an identical bit line adjacent to the first memory cell, the method comprising: providing a first gate biasing voltage and a second gate biasing voltage to the gates of the first memory cell and the second memory cell, respectively; boosting an absolute value of a channel voltage of the first memory cell to generate electron and hole pairs at the drain of the second memory cell through gate-induced drain leakage or band-to-band tunneling, wherein the first gate biasing voltage is lower than the channel voltage of the first memory cell, and the channel voltage of the first memory cell is lower than the second gate biasing voltage; and injecting the hole of the generated electron and hole pairs into the charge storage device of the first memory cell to program the first memory cell; wherein the substrate is an N-type substrate.