我在文件中使用C ++中的new()
分配了一个大小为5000 x 4859的2D数组。
class input
{
public :
int **mytable;
int rows;
int columns;
input()
{
rows=5008;
columns=4859;
std::ifstream file("test.txt");
mytable=new int *[rows];
for(int i=0;i<rows;i++)
{
mytable[i]=new int [columns];
}
// read the input and inserted them into the array.
}
int ** gettable()
{
return mytable;
}
然后在另一个通过指针使用mytable
的函数中。
void someFunction()
{
int ** table;
input file;
table= file.gettable();
// doing neccessary operations.
}
当我将表的大小减小到500 x 500时,它工作正常,但对于大尺寸,它会产生std :: bad alloc错误。我哪里做错了?请帮忙。
答案 0 :(得分:2)
这应该是有帮助的,Creating large arrays in c++。创建阵列时可以考虑的一些相关事项。 {虽然我可以运行并使用4000乘4000阵列(可能是因为系统配置),但40000乘40000失败。}
答案 1 :(得分:0)