Valgrind não reporta vazamento de memória em "excluir matriz"

Depois de implementar o código C ++ abaixo, eu corrivalgrind --leak-check=full para verificar se havia algum vazamento de memória. O resultado foi0 bytes estavam em uso na saída enão há vazamentos possíveis.

No entanto, mais tarde descobri que me esqueci de usardelete[] x em vez de apenasdelete x dentro do destruidor.

Eu procurei por algumas explicações (por exemplo:delete vs delete [] operadores em C ++), e tudo que li dizia que usardelete sem[] pode causar vazamento de memória, uma vez que chama apenas o destruidor do primeiro objeto na matriz.

Eu mudei o código para delete [] e a saída valgrind foi a mesma (como esperado). Mas agora estou confuso:"Existe um problema com valgrind, ou fazdelete realmente funciona bem para matrizes, mesmo sem o operador[]"

#include <iostream>
#include <string.h>
using namespace std;
class Foo {
  private: char *x;
  public:
    Foo(const char* px) {
       this->x = new char[strlen(px)+1];
       strcpy(this->x, px);
    }
    ~Foo() {
       delete x;
    }
    void printInfo() {  cout << "x: " << x << endl;  }
};
int main() {
   Foo *objfoo = new Foo("ABC123");
   objfoo->printInfo();
   delete objfoo;
   return 0;
}

questionAnswers(2)

yourAnswerToTheQuestion