我正在构建一个小型软件引擎,我想使用堆栈来快速迭代大量集合.但后来我发现这可能是一个坏主意,因为堆栈不像堆那么大的内存存储.但我被堆栈的速度和缺乏动态分配编码实践所吸引.
有没有办法找出我可以在给定平台上推送堆栈的程度?我主要关注移动设备,但问题可能出现在任何平台上.
我在Visual Studio 2005中用C编程.我有一个多线程程序,但这在这里并不是特别重要.
如何确定(大约)我的线程使用多少堆栈空间?
我计划使用的技术是将堆栈内存设置为某个预定值,比如0xDEADBEEF,运行程序很长时间,暂停程序,并调查堆栈.
如何使用Visual Studio读取和写入堆栈内存?
编辑:例如,参见"如何确定最大堆栈使用量". 那个问题谈到了一个嵌入式系统,但在这里我试图在常规PC上确定答案.
我正在使用 VC++ 2012。我想知道当前线程中有多少堆栈内存可用。
快速搜索指向使用 malloc.h 和 stackavail() 函数,但它在 Visual C++ 2012 中不存在。我如何以另一种方式实现这一点?
有问题的例子是这样的:
#include "stdafx.h"
#include <iostream>
#include <malloc.h>
using namespace std;
int _tmain()
{
cout << "Available stack: " << stackavail() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)