Pass pointer by reference and memory saving

When you do [nobbc]*vetor2[i][/nobbc] the precedence rules get it interpreted as [nobbc]*(vetor2[i])[/nobbc] and not [nobbc](*vetor2)[i][/nobbc].

Why do you do free(vetor); ?