1. A method of programming data in a memory, the memory comprising a plurality of manufacture-defined blocks, a plurality of user-defined blocks and an information block, the method comprising steps of: obtaining a programming address pointing to a user-defined block in the memory and programming data; determining whether the user-defined block is already programmed and cannot be erased; and if the user-defined block is already programmed and cannot be erased, searching an empty manufacture-defined block among the manufacture-defined blocks, storing the programming address and a replacing address pointing to the empty manufacture-defined block to an information block, and storing the programming data to the empty manufacture-defined block, wherein, the manufacture-defined block is implemented with one of a replacing cell row and a replacing cell column, and the manufacture-defined block and the user-defined block have a same matrix size; and the manufacture-defined blocks and the user-defined blocks are implemented with one time programmable (OTP) memory blocks.