这是分配和释放不断重新评估的内存的正确方法吗?

问题描述 投票:0回答:0

我有一个我编写的名为 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() 都返回动态分配的字符串,我想将这些字符串重新分配给指针位置和结果。但是我知道,如果我重新分配这些指针,如果我不释放它们,旧的结果将会丢失,所以我有一个临时指针,我在释放它之前将旧的指针移交。

这看起来是否正确,或者这样做是否存在潜在问题,或者更好的方法?

谢谢。

c memory-management
© www.soinside.com 2019 - 2024. All rights reserved.