1. A method of writing data to a non-volatile memory having memory cells arranged in minimum units of erase of a block, a page being a unit of programming of a block, comprising: reading a page of stored data addressable in a first increment of address from said non-volatile memory into a page buffer, said page of stored data comprising an allocated data space addressable in a second increment of address and pointed to by an address pointer, said allocated data space comprising obsolete data, wherein said first increment of address is greater than said second increment of address; updating a portion of stored data in said page buffer with said data to form an updated page of data; allocating storage space addressable in said first increment of address in said non-volatile memory sufficient to store said updated page of data; writing said updated page of data to said allocated storage space; and updating said address pointer with a location of said allocated storage space.