我有一个我编写的名为 add() 的函数,它返回一些动态分配的内存。在这种情况下,我想将该内存传递给函数本身(它会做一些事情并返回一个新的动态分配的块和更新的结果)。在这种情况下,我有一个名为 result 的指针,我想从中跟踪这个不断变化的结果。但是我想确保每次我的函数返回的旧内存都被正确释放,这样就不会发生内存泄漏。这就是我目前的实现方式:
char* result = (char*)malloc(sizeof(char)*2);
result = strcpy(result,binary+i); // details here don't matter
char* temp;
while(i >= 0){
if(binary[i] == '1'){
temp = result;
result = add(result,position);
free(temp);
}
temp = position;
position = mult2(position);
free(temp);
i--;
}
在这种情况下,add() 和 mul2() 都返回动态分配的字符串,我想将这些字符串重新分配给指针位置和结果。但是我知道,如果我重新分配这些指针,如果我不释放它们,旧的结果将会丢失,所以我有一个临时指针,我在释放它之前将旧的指针移交。
这看起来是否正确,或者这样做是否存在潜在问题,或者更好的方法?
谢谢。