free 的方法与之前如何 alloc的相关。
* 如果之前是 一次alloc(例如:指向一个二维数组 char ** p = new char arr[3][3]), 那么申请的一整块连续的heap space, 那么应该也只有一个manage structor, 所以只需要free 一次(即set manage structor 中的availiable flag = 1)
* 如果之前是 多次alloc (例如: 一个数组指针 char **p; p=new char *[3], 那么申请的多块的heap space,有多个manage structor,所以需要free多次,set 多次)
* 如果之前是 一次alloc(例如:指向一个二维数组 char ** p = new char arr[3][3]), 那么申请的一整块连续的heap space, 那么应该也只有一个manage structor, 所以只需要free 一次(即set manage structor 中的availiable flag = 1)
* 如果之前是 多次alloc (例如: 一个数组指针 char **p; p=new char *[3], 那么申请的多块的heap space,有多个manage structor,所以需要free多次,set 多次)