munmap_chunk():无效指针。

问题描述 投票:0回答:1

在头文件中声明

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"。

c malloc
1个回答
0
投票

现在的情况是,malloc库代码往往要到程序后期才意识到自己已经破坏了数据结构。所以崩溃或错误信息的位置并不总是与实际的错误相对应。

Glibc有通过环境变量启用的malloc调试模式,但我发现valgrind在所有方面更有用。

© www.soinside.com 2019 - 2024. All rights reserved.