如何使用printf在c中打印当前堆栈使用情况?
基本上,标题说明了一切。 我需要打印,正在运行的程序当前使用了多少堆栈,我需要用printf()打印它 编辑:我必须使堆栈溢出。为了做到这一点,我编写了一个递归函数,它无限期地调用自己。我必须反复打印堆栈使用情况,以显示堆栈是如何变小的如何使用printf在c中打印当前堆栈使用情况?,c,C,基本上,标题说明了一切。 我需要打印,正在运行的程序当前使用了多少堆栈,我需要用printf()打印它 编辑:我必须使堆栈溢出。为了做到这一点,我编写了一个递归函数,它无限期地调用自己。我必须反复打印堆栈使用情况,以显示堆栈是如何变小的 EDIT2:该平台是linux上的gcc。没有可移植的方法,C也不能保证您的程序使用的是“堆栈” 您必须更加具体,也许您可以使用特定于操作系统的方法 编辑:在Linux中,您可以使用该函数查询操作系统中的一些参数。您可以获得允许的最大堆栈大小,这听起来对于将堆栈
EDIT2:该平台是linux上的gcc。没有可移植的方法,C也不能保证您的程序使用的是“堆栈” 您必须更加具体,也许您可以使用特定于操作系统的方法
编辑:在Linux中,您可以使用该函数查询操作系统中的一些参数。您可以获得允许的最大堆栈大小,这听起来对于将堆栈增长到该级别非常有用。但是,我不确定您是否可以获得当前的堆栈大小。没有可移植的方法可以做到这一点,甚至C也不能保证您的程序正在使用“堆栈” 您必须更加具体,也许您可以使用特定于操作系统的方法
编辑:在Linux中,您可以使用该函数查询操作系统中的一些参数。您可以获得允许的最大堆栈大小,这听起来对于将堆栈增长到该级别非常有用。但是,我不确定您是否可以获得当前堆栈大小。
/proc/self/stat
(有关详细信息,请参阅man 5 proc
)和/或/proc/self/status(人类可读)显示当前堆栈使用情况。/proc/self/stat
(有关详细信息,请参阅man 5 proc
)和/或/proc/self/status(人类可读)显示当前堆栈使用情况。这取决于平台……您可以继续在堆栈上分配一个巨大的缓冲区,比如10 KB左右的缓冲区,并保持递增计数,直到遇到问题为止。对于linux,您还可以参考以下问题:打印局部变量的地址,如Ganesh建议的大缓冲区。这取决于平台……您可以在堆栈上继续分配一个大缓冲区,如10 KB左右的缓冲区,并保持递增计数,直到遇到问题为止。对于linux,您也可以参考这个问题:打印局部变量的地址,如Ganesh建议的大缓冲区。