secure::erase() should be more secure

inline static void erase(T *object) {
  memset(object, 0, sizeof(object));
  delete object;
}

erase() only clear first sizeof(void *) bytes.