我想创建一个如下所示的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];
)
答案 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)
您正在使用**
创建指向指针的指针。我不确定你想要那个,你可能想要一个普通的指针(*
)。