我必须创建程序,它能够生成GML文件。
为此我实现了一个函数GetEdges
,这个函数应该返回三个数组(通过引用调用)。
该功能的签名如下:
bool GetEdges(DG_NODE_ID **sourceIds, DG_NODE_ID **destIds, int **weights, int *count)
在我想要malloc空间的函数中:
*sourceIds = (DG_NODE_ID *) malloc(cntEdges * sizeof (DG_NODE_ID));
一旦我使用4个节点,我就会得到以下输出:
graph:malloc.c:2451:sYSMALLOc:断言`(old_top ==(((mbinptr) (((char *)&((av) - > bins [((1) - 1)* 2])) - __builtin_offsetof(struct malloc_chunk,fd))))&& old_size == 0)|| ((unsigned long)(old_size)
=(unsigned long)(((__ builtin_offsetof(struct malloc_chunk,fd_nextsize))+((2 *(sizeof(size_t))) - 1))&〜((2 *(sizeof(size_t))) - 1)))&& ((old_top) - > size& 0x1)&& ((unsigned long)old_end& pagemask)== 0)'失败。
我尝试了所有内容,但是在使用4个节点后,我无法理解为什么会失败。
我上传了整个源代码:Download - Source code
答案 0 :(得分:0)
这很可能意味着您滥用由以下内容分配的内存:
你有valgrind
吗?如果是这样,请使用它。如果没有,请尽可能使用它。 (它可用于许多类Unix系统;它不适用于Windows AFAIK。)
答案 1 :(得分:0)
您是否确认cntEdges是一个合理的值而不是一些未初始化(和非常大的数字)值?