Valgrind не сообщает об утечке памяти при «удалении массива»

После реализации кода C ++, приведенного ниже, я запустилvalgrind --leak-check=full чтобы проверить, не было ли утечки памяти. Результат был 0 байт были использованы на выходе а также утечки не возможны.

Однако позже я обнаружил, что забыл использоватьdelete[] x вместо простоdelete x внутри деструктора.

Я искал некоторые объяснения (например:ператоры @delete и delete [] в C ++) и все, что я прочитал, говорит, что используяdelete без[] может вызвать утечку памяти, поскольку вызывает только деструктор для первого объекта в массиве.

Я изменил код для удаления [], и вывод valgrind был таким же (как и ожидалось). Но теперь я в замешательстве: "Есть ли проблема с валгриндом или нет?&quodelete действительно отлично работает для массивов даже без оператора[]? "

#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;
}

Ответы на вопрос(2)

Ваш ответ на вопрос