【发布时间】:2009-08-23 16:01:55
【问题描述】:
好的,我有这个code:
typedef struct faux_crit
{
char dna[DNALEN+1]; //#define'd to 16
int x, y;
int age;
int p;
int dir;
} crit;
crit *makeguy(int x, int y)
{
crit *guy;
guy = (crit *) malloc(sizeof(crit));
strcpy(guy->dna, makedna());
guy->x = x;
guy->y = y;
guy->age = guy->p = guy->dir = 0;
return guy;
}
char *makedna()
{
char *dna;
int i;
dna = (char *) malloc(sizeof(char) * DNALEN+1);
for(i = 0; i < DNALEN; i++)
dna[i] = randchar();
return dna;
}
int main()
{
int i;
crit *newguy;
srand((unsigned) time(0));
newguy = makeguy(0, 0);
/*[..]
just printing things here
*/
free(newguy);
return 0;
}
我只想知道我在管理内存时做错了什么,因为 valgrind 报告了内存错误。我认为它是 makedna 中的 dna var,但我应该什么时候释放它?退出函数后无法访问,需要返回,所以在此之前无法释放。
编辑:好的,谢谢大家。
【问题讨论】:
-
请不要发布指向您的代码的链接。相反,发布实际的、最小的、可编译的代码来说明您的问题,并与您的问题保持一致。
标签: c memory-management