c++ - 你如何在 C++ 中为二维数组分配内存

标签 c++ arrays image-processing visual-studio-2013

嘿,我想为二维数组分配一些内存,稍后在 C++ 中释放它 我想这样做,因为我的程序出现错误“表达式必须有一个常数值。

int x = 高度;

int y = width;

int pixelArray[x][y];

谢谢。

我正在使用 Visual Studio 2013

最佳答案

天真的方法是分配一个数组来包含行指针,然后分配每一行,但由于内存局部性,这可能会导致数组性能不佳。它也不能像固定大小的二维数组一样使用,后者在内存中是连续的。

所以你可以做的是分配一个整数 block 来保存所有数据,并分配一个指针数组来索引它。

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;

您应该考虑将此功能包装到一个简单的类中,因为它维护了多个指针。

关于c++ - 你如何在 C++ 中为二维数组分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34984135/

相关文章:

c++ - 一元类型参数无效 ‘*’

c++ - 从基类指针访问派生类成员

c++ - 在多个函数中使用时 va_list 的意外行为

C++ 错误 : Free() invalid next size (fast)

c++ - 使用 Sapera 拍摄图像并将数据复制到 vector

ios - GPUImage 创建一个自定义过滤器来更改选定的颜色

ios - 在 Swift/iOS 中从 UITableView 删除行并从 NSUserDefaults 更新数组的正确方法

javascript - for 循环中的 JS 数组

javascript - 如何使用 JavaScript 函数式编程从对象列表中找到具有最低属性的对象?

python - 与 OpenCV 中的掩码匹配的图像提取部分