【发布时间】: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;
}
【问题讨论】: