关于c ++:使用“new”创建2D数组?


Create 2D array with “new”?

本问题已经有最佳答案,请猛点这里访问。

我想创建一个二维数组,如下所示。

1
char **dog = new char[480][640];

但它的错误:

1
2
error C2440: 'initializing' : cannot convert from 'char (*)[640]' to 'char ** '
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

使用"新建"需要做什么?(不使用calloc、malloc或char dog[480][640];)


像这样:

1
2
3
char **dog = new char *[480];
for (int i = 0; i < 480; i++)
    dog[i] = new char[640];

删除时也是这样,但首先是循环。


如果要从堆中获取内存,可以这样使用:

1
2
3
4
5
6
7
8
// declaration
char *dog = new char[640*480];

// usage
dog[first_index * 640 + second_index] = 'a';

// deletion
delete[] dog;


您正在使用**创建指向指针的指针。我不确定你想要这个,你可能想要一个普通的指针(*)。