我遇到了一个问题,我在堆栈上使用了太多内存。我正在使用几个大型数组,我只需要在代码中的步骤之间。基本上我需要知道如何释放由创建的数组变量使用的内存:
Cast(Jobno As Varchar(20)) = '93388-01'
答案 0 :(得分:1)
你应该使用矢量来做这样的事情。它是C ++标准库的一部分,在大多数实现中都经过了优化。当向量超出范围时,向量占用的内存将自动释放。所以你永远不必自己释放记忆。
使用向量的另一个好处是,您不必担心堆栈空间不足,因为所有"数组"向量占用的内存位于程序的堆上。
例如http://en.cppreference.com/w/cpp/container/vector/vector
除此之外,如果您认为您的程序内存永远不够,那么您应该考虑将该磁盘用作另一种存储机制。数据库以这种方式工作。他们将大部分数据存储在磁盘上。
答案 1 :(得分:1)
要故意释放一些自动存储空间('堆栈中的项目),您可以执行以下操作 - 基本上您只需限制变量的范围
更改代码:
type_micro
将代码更改为:
//...
float arrayName[length][width];
// ...
注意:向量使用有限数量的堆栈(我的系统上有24个字节), 无论你投入多少元素!
答案 2 :(得分:0)
您不需要任何特别声明。
如果数组是具有自动存储持续时间的局部变量,则数组将在函数返回时退出或退出范围;如果是静态变量(在函数外声明),则在退出程序时释放数组。
答案 3 :(得分:-1)
如果遇到堆栈内存不足的情况,您可能希望在堆上分配内存。在这种情况下,您将要新建数组。
float** my_array = new float* [rowCount];
for(int i = 0; i < rowCount; ++i)
{
my_array[i] = new float[columnCount];
}
// and delete it later
for(int i = 0; i < rowCount; ++i)
{
delete [] my_array[i];
}
delete [] my_array;