有一个像样的malloc包,只是在灾难发生时试图完成realloc 正确编译的一半时间,另一半时间,包中的几乎所有功能都是未定义的。"
mdriver.c:(.text+0x1e3): undefined reference to `mm_init'
mdriver.c:(.text+0x221): undefined reference to `mm_realloc'
mdriver.c:(.text+0x255): undefined reference to `mm_free'
...等等,几乎所有功能加上"团队,"虽然我没有任何名称的功能。 我在字面上改变了copySize分配中的数字,偶尔得到两个结果,无论数字选择如何,现在,我使用的任何数字都会给我带来巨大的失败。它使用一个名为mdriver.c的makefile进行编译。
/*
* mm_realloc - Implemented simply in terms of mm_malloc and mm_free
*/
void *mm_realloc(void *bp, size_t size)
{
void *obp = bp;
void *nbp;
size_t copySize = 10;
size_t asize = ALIGN(size);
nbp = mm_malloc(asize);
if (nbp == NULL)
return NULL;
copySize = *(size_t *)((char *)obp - SIZE_T_SIZE + 2);
if (asize < copySize)
copySize = asize;
memcpy(nbp, obp, copySize);
mm_free(obp);
return nbp;
}