C++ 我有没有办法找到从堆栈实例化了多少对象,从堆实例化了多少对象

C++ 我有没有办法找到从堆栈实例化了多少对象,从堆实例化了多少对象,c++,C++,我有没有办法找到从堆栈实例化了多少对象,从堆实例化了多少对象。我不希望对堆栈中的对象具有范围限制 如果在构造函数和析构函数中使用静态计数器,则在这两种情况下(堆栈和堆中的对象)都会调用它。一种方法是利用堆栈中的对象是有作用域的,当它们超出作用域时调用析构函数的思想,但我想要一个更好的解决方案,以便知道任何时间点的对象数。重写类的运算符new和运算符delete。在这些运算符中有另一个递增/递减的计数器。这将跟踪在堆上创建的对象。构造函数/析构函数可以递增/递减另一个计数器,该计数器将对所有对象进

我有没有办法找到从堆栈实例化了多少对象,从堆实例化了多少对象。我不希望对堆栈中的对象具有范围限制


如果在构造函数和析构函数中使用静态计数器,则在这两种情况下(堆栈和堆中的对象)都会调用它。一种方法是利用堆栈中的对象是有作用域的,当它们超出作用域时调用析构函数的思想,但我想要一个更好的解决方案,以便知道任何时间点的对象数。

重写类的运算符new和运算符delete。在这些运算符中有另一个递增/递减的计数器。这将跟踪在堆上创建的对象。构造函数/析构函数可以递增/递减另一个计数器,该计数器将对所有对象进行计数。两者的区别在于堆栈上的对象集(以及全局对象)。

Tarydon的解释适用于除内部类型之外的所有对象。对于内部类型,您可以覆盖全局new和delete,但据我所知,没有跟踪内部堆栈分配的真正方法。

我能想到的唯一解决方案是每次实例化或(显式或非显式)删除对象时保留计数。

如果使用新操作符创建对象,则将其记录为来自堆,否则,将其记录为正则变量

因为Sandeep说的是在构造函数和析构函数中使用静态计数器,所以我认为他不是在研究内在类型。哦,哇,这让我的答案一窍不通。从来没有想到过这样的事情