在头文件中声明
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代表struct中arr的大小,我通过gdb运行了这段代码,当这行代码到达这个malloc时,它会抛出我,并指出指针错误,所以它甚至不能到达函数"free“。
发布于 2020-04-21 23:03:24
正在发生的情况是,malloc库代码通常直到程序的后面才意识到它已经损坏了数据结构。因此,崩溃或错误消息的位置并不总是与实际错误相对应。
Glibc通过环境变量启用了malloc调试模式,但我发现valgrind在各个方面都更有用。
https://stackoverflow.com/questions/61346041
复制相似问题