gpt4 book ai didi

c - malloc'ed 3d array 生成数据访问冲突

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:28 27 4
gpt4 key购买 nike

我在 C 中有一个 malloc 的 double 3d 数组,当通过索引访问时会生成数据访问冲突错误。

分配函数:(简化版本不检查空值或错误释放)

 #define DIMENSIONA 50
#define DIMENSIONB 30
#define DIMENSIONC 2

double *** Array;

void InitialiseDataStructure(void)
{
int Counter = 0;
int PointCounter = 0;

Array = (double ***)malloc(DIMENSIONA * (sizeof(double**)));

for (Counter = 0; Counter < DIMENSIONA; Counter++)
{
Array[Counter] = (double **)malloc(DIMENSIONB * sizeof(double *));

for (PointCounter = 0; PointCounter < DIMENSIONB; PointCounter++)
{
Array[Counter][PointCounter] = (double *)malloc(DIMENSIONC * sizeof(double));

}

}
}

然后像这样访问数组:

 Array[x][y][z] = 0;

这会产生数据访问冲突错误并终止程序。

我已经阅读并尝试并得出结论 - 我很笨。请帮忙!!!

最佳答案

以下 for 循环中的 POINTS_PER_GEOFENCE 是什么?

  for (PointCounter = 0; PointCounter < POINTS_PER_GEOFENCE; PointCounter++)

不应该是吗

Array = malloc(DIMENSIONA * (sizeof(double**)));   
for (Counter = 0; Counter < DIMENSIONA; Counter++) {
Array[Counter] = malloc(DIMENSIONB * sizeof(double *));
for (PointCounter = 0; PointCounter < DIMENSIONB; PointCounter++) {
Array[Counter][PointCounter] = malloc(DIMENSIONC * sizeof(double));
}
}

注意:

  • 阅读this用于转换 malloc() 的返回值。
  • 在使用之前,您需要检查 malloc() 是否返回成功和失败。

关于c - malloc'ed 3d array 生成数据访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8814622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com