在头文件中声明
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时,它把我扔出去,说指针错误,所以它甚至不能达到funcion "free"。
现在的情况是,malloc库代码往往要到程序后期才意识到自己已经破坏了数据结构。所以崩溃或错误信息的位置并不总是与实际的错误相对应。
Glibc有通过环境变量启用的malloc调试模式,但我发现valgrind在所有方面更有用。