Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用printf在c中打印当前堆栈使用情况?_C - Fatal编程技术网

如何使用printf在c中打印当前堆栈使用情况?

如何使用printf在c中打印当前堆栈使用情况?,c,C,基本上,标题说明了一切。 我需要打印,正在运行的程序当前使用了多少堆栈,我需要用printf()打印它 编辑:我必须使堆栈溢出。为了做到这一点,我编写了一个递归函数,它无限期地调用自己。我必须反复打印堆栈使用情况,以显示堆栈是如何变小的 EDIT2:该平台是linux上的gcc。没有可移植的方法,C也不能保证您的程序使用的是“堆栈” 您必须更加具体,也许您可以使用特定于操作系统的方法 编辑:在Linux中,您可以使用该函数查询操作系统中的一些参数。您可以获得允许的最大堆栈大小,这听起来对于将堆栈

基本上,标题说明了一切。 我需要打印,正在运行的程序当前使用了多少堆栈,我需要用printf()打印它

编辑:我必须使堆栈溢出。为了做到这一点,我编写了一个递归函数,它无限期地调用自己。我必须反复打印堆栈使用情况,以显示堆栈是如何变小的


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建议的大缓冲区。