c++ 重载全局删除不适用于 VSCode c/c++ 扩展

c++ overloading global delete is not working on VSCode c/c++ extension

我正在做一个关于重载全局 new/delete 的学校项目,并且在调用默认运算符删除而不是我的重载版本时遇到问题。本来我以为是我的代码有问题,但是我安装了Dev-C++,成功调用了重载运算符。这是我用于测试的代码(不是我的项目代码,我从这里得到的: https://thispointer.com/overloading-new-and-delete-operators-at-global-and-class-level/).

#include <iostream>
    #include <cstdlib>
// Overloading Global new operator
void* operator new(size_t sz)
{
  void* m = malloc(sz);
  std::cout<<"User Defined :: Operator new"<<std::endl;
  
  return m;
}
// Overloading Global delete operator
void operator delete(void* m)
{
  std::cout<<"User Defined :: Operator delete"<<std::endl;
  free(m);
}
// Overloading Global new[] operator
void* operator new[](size_t sz)
{
  std::cout<<"User Defined :: Operator new []"<<std::endl;
  void* m = malloc(sz);
  return m;
}
// Overloading Global delete[] operator
void operator delete[](void* m)
{
  std::cout<<"User Defined :: Operator delete[]"<<std::endl;
  free(m);
}
class Dummy
{
public:
  Dummy()
  {
    std::cout<<"Dummy :: Constructor"<<std::endl;
  }
  ~Dummy()
  {
    std::cout<<"Dummy :: Destructor"<<std::endl;
  }
};
int main()
{
  int * ptr = new int;
  delete ptr;
  Dummy * dummyPtr = new Dummy;
  delete dummyPtr;
  int * ptrArr = new int[5];
  delete [] ptrArr;
  return 0;
}

这段代码打印了Dev-C++中的所有语句,除"user-defined::operator delete"之外的所有语句都打印在VSCode.

我的问题是我可以尝试找到这个问题的根源吗?我应该在 VSCode 上重新安装 c++ 插件吗?我在这里缺少一些简单的东西吗?

经过一些试验,我得出结论,VSCode c/c++ 扩展中存在错误。我在那里安装了 visual studio 和 运行 代码,并且运行良好。我还与一位使用 c/c++ 扩展名的同学交谈过,她遇到了和我一样的问题。现在我们都切换了,问题就解决了。