Mar*_* Z. 0 c malloc pointers dynamic-allocation
我试图malloc
在初始化另一个动态分配的数组后再次调用,但我的程序无法运行(尽管它可以通过编译).我的部分代码如下.
table = (Node **)malloc(m * sizeof(Node*));
for(i=0; i<=m; i++)
table[i] = NULL;
table2 = (Node *)malloc(n * sizeof(Node));
Run Code Online (Sandbox Code Playgroud)
错误信息如下:
malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)
->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_si
ze == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (st
ruct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t
))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)'
failed.
Run Code Online (Sandbox Code Playgroud)
最奇怪的是,我发现我的程序在删除上面代码中的第二行和第三行后可以成功运行,其中NULL
分配了table[i]
.我有点困惑,因为我不知道是什么原因导致这个malloc
错误.另外,分配NULL
给新分配的指针是否合适?
谢谢!