我的xcode项目中有一些复杂的类(在通用示例下面) 而且似乎我遇到了某种数据大小限制。 我需要的数组大小不起作用,如果我减少代码工作的数组大小(所以没有编程错误),但它对我计划的太小了。
通过互联网阅读我发现它一定是堆栈大小的问题,大多数解决方案都说"将静态数组转换为动态数组"。
但是(1)对于多维数组而言并不那么容易(一些最多5到10个维度,因为它们监视多个独立变量并且每种组合都是可能的) (2)大多数数组嵌套在几个类中,使其更糟糕。
我认为已经减少了数据
但一方面这可能危及整体结果,另一方面是项目仍处于起步状态,因此它将在下个月增长......这个数组大小的问题迟早会回来......
这里我概括了显示4维数组(2x 2D)的代码。 我想大多数专业程序都使用更大的数组。 所以必须有办法使这项工作......
//.h
class StatisticTable
{
public:
long Array1 [100][50];
long Array2 [100][50];
long Array3 [100][140];
};
class Statistic
{
public:
void WriteStatistic(short Parameter_a, short Parameter_b,
short Parameter_c, short Parameter_d);
short ReadStatistic(short Parameter_a, short Parameter_b,
short Parameter_c, short Parameter_d);
private:
StatisticTable Table[16][8];
};
//.cpp
void WriteStatistic(short a, short b, short c, short d)
{
for (int i=0; i<d, i++) {Table[a][b].Array1[c][i]++;}
for (int i=d; i<50, i++) {Table[a][b].Array2[c][i]++;}
//write some more stuff
return;
}
答案 0 :(得分:1)
您可以使用堆分配而不是堆栈分配吗?
如建议的那样,使用std :: unique_ptr:
auto const ptr = std::unique_ptr<StatisticTable>(new StatisticTable()).get(); // heap allocated and deleted automatically when obj goes out of scope
即。
auto obj = new StatisticTable(); // heap allocation, allocate reference to new StatisticTable object on heap
// code
delete obj; // release heap allocated object
VS
auto x = StatisticTable() // stack allocation