Passar ponteiro por referencie e economia de memória

Pessoal, estou tendo problemas em relação a quantidade de memória ao tentar usar um ponteiro que é um vetor de char, eu estava passando o vetor por parametro e parece que isso foi consumindo a memória pois eu passava ele para 3 funções(uma chamando dentro da outra), para tentar resolver o problema pensei em passar uma referencia do ponteiro para usar a mesma variável nas 3 funções, mas estou tendo problemas para popular o vetor e o sistema imprime apenas um caracter.

O código que estou usando apenas para aprendizado é esse:

void setup()
{
  Serial.begin(9600);
}

void loop()
{
    criaVariavel();
    delay(10000);
}

void criaVariavel() {

  	char* vetor;
  	dadosVetor(&vetor);
  	
  	Serial.println(vetor);
	
  	delete[] vetor;
  	free(vetor);
}

void dadosVetor(char** vetor2) {

    *vetor2 = new char[10];
  
    for(int i=0; i<9; i++) {

      *vetor2[i] = 'a';

    }
  
  *vetor2[9] = '\0';
  
}

No println ele mostra apenas o 'a' em vez de 'aaaaaaaaa', sera que é a forma que estou fazendo para setar o valor na posição dentro do for ?
Dentro da dadosVetor(), tem como repassar por referencia o mesmo ponteiro para outra função?
Em relação ao uso de memória, esta correta a forma como fiz para liberar a variavel usando delete[] e free() ?

O que é que sabes acerca de apontadores?

O apontador serve para apontar para um endereço de memória... no entanto, o teu apontador não aponta para lado algum. Sendo assim, porque precisas dum apontador?

Eventualmente o teu apontador aponta para uma variável local... no entanto, tu tentas aceder a uma variável local, o que obviamente não funciona.