【发布时间】:2018-05-22 03:18:51
【问题描述】:
我目前正在做一个使用二维数组的项目。 我有一个函数可以制作一个二维整数数组,还有其他可以找到最短路径等的函数,它们都可以正常工作。
但是,我遇到了另一部分的问题,在尝试初始化这些数组时出现“访问冲突错误”:
// |V|x|V| arrays
int** fwdistance = malloc(vertexCount*vertexCount*(sizeof(int)));
int** fwnext = malloc(vertexCount*vertexCount*(sizeof(int)));
for (int i = 0; i < vertexCount; i++) {
for (int j = 0; j < vertexCount; j++) {
fwdistance[i][j] = INT_MAX; // Distances = infinity
fwnext[i][j] = -1; // Next nodes are unknown
}
}
尝试初始化 fwdistance[0][0] 时发生错误。 正如我所提到的,我有其他数组以相同的方式初始化,并且它们工作得很好:
// Initialises arrays for Dijkstra's Shortest Path algorithm
int *distance = malloc(vertexCount*(sizeof(int)));
int *previous = malloc(vertexCount*(sizeof(int)));
我真的不知道!
【问题讨论】:
-
你不应该使用
fwdistance[i*vertexCount+j]你分配的数组仍然是1d -
你不能用一个 malloc 调用来分配一个二维数组。而且您分配中的类型对于一维分配也是错误的。
标签: c arrays malloc access-violation