【发布时间】:2020-08-04 08:20:17
【问题描述】:
在头文件中声明
typedef struct htab {
size_t size;
size_t arr_size;
struct htab_item *arr[];
}htab_t;
并具有功能
htab_t *htab_init(size_t)
{
htab_t *table = malloc(sizeof(htab_t)+n*(sizeof(struct htab_item*)));
if (table == NULL)
{
fprintf(stderr,"Error: allocation failed\n");
return NULL;
}
在 malloc 行它抛出错误:
munmap_chunk():invalid pointer
谁能解释一下为什么会这样?
编辑:
n 是结构中 arr 的大小
我通过 gdb 运行它,当线路到达这个 malloc 时,它把我扔出去并说指针错误,所以它甚至无法达到“免费”功能
【问题讨论】:
-
'n' 的值是多少?
-
您确定是
malloc行导致了错误吗?我希望看到free。 -
是的,如果您未能初始化
htab::arr中的指针然后释放它们,我希望看到这一点。 -
使用调试构建,然后使用
valgrind运行您的程序。它非常擅长发现内存分配错误。