嘿我想为2D数组分配一些内存,稍后在C ++中释放它 我想这样做,因为我的程序中出现错误"表达必须具有恒定的价值。
int x = height;
int y = width;
int pixelArray[x][y];
谢谢。
我正在使用Visual Studio 2013
答案 0 :(得分:1)
天真的方法是分配一个数组来包含行指针,然后分配每一行,但由于内存局部性,这可能导致数组性能不佳。它也不能像固定大小的2D数组一样使用,它在内存中是连续的。
所以你可以做的是分配一个整数块来保存所有数据,并分配一个指针数组来索引它。
int ** my_array = new int*[ x ];
my_array[0] = new int[ x * y ];
for( int i = 1; i < x; i++ )
{
my_array[i] = my_array[i-1] + y;
}
要清理,请执行以下操作:
delete [] my_array[0];
delete [] my_array;
您应该考虑将此功能包装到一个简单的类中,因为它保留了多个指针。
答案 1 :(得分:0)
由于x和y是变量,因此必须使用new动态分配数组。您可以按如下方式初始化2D数组:
~/.bashrc
你以下列方式处理它:
int ** pixelArray = new int*[x];
for (int i = 0; i < x; i++) {
pixelArray[i] = new int[y];
}