【发布时间】:2011-08-15 17:42:55
【问题描述】:
我想创建一个指向二维指针数组的指针(宽度和高度为x)。
这段代码会达到我的预期吗? (创建数组元素,写出一些关于它们的信息,然后释放所有分配的内存。)
int main(int argc, char** argv) {
int x = 3;
Node ***array = new Node**[x];
for (int i = 0; i < 3; i++) {
array[i] = new Node*[x];
for (int j = 0; j < x; j++) {
array[i][j] = new Node(i, j); /* Node::Node(int row, int col) */
}
}
/* ....... */
for (int i = 0; i < x; i++) {
for (int j = 0; j < x; j++) {
cout << array[i][j]->row << ", " << array[i][j]->col << endl;
}
}
/* ....... */
for (int i = 0; i < x; i++) {
for (int j = 0; j < x; j++) {
delete array[i][j];
//array[i][j] = NULL;
}
delete[] array[i];
//array[i] = NULL;
}
delete[] array;
//array = NULL;
return 0;
}
或者我应该创建一个vector 的vector 的指向Node 对象的指针吗?
或者我应该在堆栈上分配我的对象吗?
(我使用的是指针,因为在 Java 或 C# 中,创建对象时必须始终使用 new 关键字(但是,我不认为所有对象都在堆内存中),而且我读到堆上有更多可用空间。)
我使用带有new 关键字的指针的另一个原因是,我想创建指向同一个对象的多个指针。
我应该在堆栈上创建一个对象,然后只创建指向该对象的指针吗?
【问题讨论】:
-
一个节点有多大?你能给我们看一下 Node 的声明吗?
-
节点对象只是一个例子,它有两个公共
int字段。
标签: c++ pointers multidimensional-array