【发布时间】:2014-08-19 00:53:24
【问题描述】:
我遇到了一个奇怪的分段错误,它发生在某处,我想知道这是否可能是由于我分配指针矩阵数组的方式造成的。
在 .h 文件中是这样声明的:
int **matrix;
但是当我通过它时,我以这种方式使用它 int *matrix[],以便 使用 matrix[i] 访问各个行(这使我的许多任务变得更简单)。
那么,当我分配矩阵时,我应该这样做:
matrix = new int * [vertices];
for (int i = 0; i < vertices; i++)
matrix[i] = new int[vertices];
或者对于第三行,我应该使用 -> 运算符:
matrix[i]-> new int[vertices]; // Or something like this.
这两者有什么区别?
【问题讨论】:
-
你能发布更多代码,比如接收矩阵参数的函数吗?并且可能会发布一个小的可编译示例。
-
一个编译,另一个不编译?
-
文件很大,这只是其中的一部分,我担心可能会导致错误。 @0x499602D2 好吧,是的,因此旁边的评论...
-
我认为您正在寻找运算符
*,而不是后一个示例中的->。 -
我会以不同的方式处理工作任务。 stackoverflow.com/a/6465254/179910
标签: c++ arrays pointers matrix