【问题标题】:Heap block error while freeing a pointer array释放指针数组时出现堆块错误
【发布时间】:2023-02-01 19:26:32
【问题描述】:

我编写了这个程序,基本上使用指针分配一个字符矩阵。 这是代码:

char **bitmap;

void create_bitmap() {
  int i;
  int columns = (int) ceil(m / 8) + 1;
  bitmap = (char **) malloc(sizeof(char) * n);

  for (i = 0; i < n; i++)
    bitmap[i] = (char *) calloc(columns, sizeof(char));
}

void free_bitmap() {
  int i;

  for (i = 0; i < n; i++) {
    free(bitmap[i]);
  }

  free(bitmap);
}

在 free_bitmap() 过程的最后一条指令处出现堆块错误。 我只是不知道是什么触发了错误。 提前致谢。

【问题讨论】:

标签: c matrix memory-management malloc free


【解决方案1】:

错误很简单,我想这是我今天早上注意力不集中的最后证据。

在过程 create_bitmap() 中,malloc 指令应该是这样写的:

bitmap = (char **) malloc(sizeof(char *) * n);

现在,这个指令将分配 n 个 char* 指针,而不仅仅是一个 char。 赦免。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    相关资源
    最近更新 更多