我希望了解在C++中是否有一种方法可以程序化地确定正在运行的程序的堆栈大小。如果有,是否还有一种方法可以在运行时程序化地确定程序正在使用多少堆内存?为了确定堆的大小,我可以通过重载
我尝试使用以下方式实现:
new
和delete
运算符来看到一个潜在的方法,但我不认为这对智能指针有效。我尝试使用以下方式实现:
int main(){
const char STACK_BEGIN = 'A';
//a lot of code
register unsigned long int STACK_NOW asm("%esp");
long long int stack_size = (reinterpret_cast<int>(&STACK_BEGIN) - STACK_NOW);
//rest of code
}
std::vector
,您可以显著减少堆栈使用。 - Cheers and hth. - Alfmain()
例程中存储指向栈中第一个变量的全局可访问指针,然后在程序执行期间的任何时候,找到最近声明的栈变量的地址与全局指针值之间的差异来大致了解堆栈使用情况。这是一种粗略的技术,但应该至少提供关于堆栈使用情况的想法。 - Logicrat