我试图追捕内存泄漏,并找到一个来源。我是一个函数中的指针,并将它释放到另一个函数中,但我错过了解如何复制指针指向的值,同时也能够释放指针。复制和释放malloc'ed指针
Current implementation (with memory leak):
// This code has been greatly simplified
// and as such does not appear to have any purpose
int foo(){
int bestval = 0;
char *best;
char *match;
for (int i=0;i<3;i++) {
int returnValue = bar(&best);
if (returnValue > 10) {
(1)
match = best;
}
}
printf("%s", match);
(2)
return 0;
}
int bar(char ** best) {
char*s = "Hello!";
*best = malloc(strlen(s) + 1);
strcpy(*best,s);
return 0;
}
两个问题
如果我有空闲内存在,而不是(2),我会怎么做,所以那场比赛仍然会是什么载于最好的(1) ?
我应该做strcpy复制最佳匹配?如果是这样,我是否必须在foo内做另一个malloc?
假设有一个自由点二,你发布的代码不漏,但后“ 2',这个点之后匹配无效......你是否在循环中运行这段代码? – forsvarir 2011-04-11 07:23:32
为什么你需要2个“最好”和“匹配”指针? (2)你可以简单地使用'best'和'free'。 – Naveen 2011-04-11 07:23:57
@forsvarir,是的,我在一个循环中运行它,这就是为什么我在(1)处实现免费的原因。 – Rio 2011-04-11 07:26:26