【问题标题】:How should i free an array of struct?我应该如何释放一个结构数组?
【发布时间】:2020-09-23 04:08:47
【问题描述】:

我经常想做类似于以下代码示例的事情。 main() 中的 free 通常会导致错误。错误开始:“`./stackoverflow'中的错误:free():下一个大小无效(正常):...”等等。谷歌搜索向我暗示我可能已经超出了 malloced 块的限制,或者类似的东西。不幸的是,Valgrind 的输出对我来说仍然模糊不清。

我做错了什么?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct letter {
    char alpha;
    int value;
};

struct letter* init_table() {

    //struct letter* table = calloc(27, sizeof(struct letter));
    struct letter* table = malloc(27 * sizeof(struct letter));

    table[0].alpha = ' ';
    table[0].value = 1;

    for (int j = 1; j <= 27; j++) {
        table[j].alpha = (char) (j + 64);
        table[j].value = j+1; 

    }

    return table;
}

int main(int argc, char **argv) {

    struct letter *table = init_table();

    for (int j = 0; j < 27; j++) {
        printf("char is %c and int is %d\n",table[j].alpha, table[j].value);
    }

    free(table);

    return 0;
}

【问题讨论】:

    标签: c pointers malloc calloc


    【解决方案1】:
    for (int j = 1; j <= 27; j++)
    

    这里你需要输入j&lt;27

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多