用“new”创建2D数组?

时间:2011-12-04 00:43:01

标签: c++

我想创建一个如下所示的2D数组。

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

但它错了:

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];

3 个答案:

答案 0 :(得分:5)

这样的事情:

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

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

答案 1 :(得分:3)

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

// declaration
char *dog = new char[640*480];

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

// deletion
delete[] dog;

答案 2 :(得分:0)

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