进一步减小代码冗余量，并修改当内存分配失败时的变量值处理，使这个类更健壮