use size_t type for memory size parameter