ipad,需要帮助解决内存泄漏问题

时间:2010-07-16 04:13:20

标签: c ipad memory-leaks

我有这段代码:

void getStringWithTag(char* pFile, long sizeSound, char* tag, char* ret, float* currentPos){
char* tagCopy;
tagCopy = (char*)malloc(256 * sizeof(char));
int totalLen = 0;
int tempLen = 0;
memset(tagCopy, 0, 256);
memset(ret, 0, 128);
pFile += ((int)*currentPos);
while (totalLen+(*currentPos) < sizeSound) {
    if (*pFile == '<') {
        pFile += 5;
        totalLen += 5;
        while(*pFile != '>'){
            *tagCopy = *pFile;
            tagCopy++;
            pFile++;
            totalLen++;
            tempLen++;
        }
        tagCopy -= tempLen;
        tempLen = 0;
        if (strcmp(tagCopy, tag) == 0) {
            pFile++;
            totalLen++;
            while (*pFile != '<') {
                *ret = *pFile;
                ret++;
                pFile++;
                totalLen++;
                tempLen++;
            }
            ret -= tempLen;
            *currentPos += totalLen;
            tagCopy = NULL;
            free(tagCopy);
            return;
        }else{
            memset(tagCopy, 0, 256);
        }
    }
    pFile++;
    totalLen++;
}
tagCopy = NULL;
free(tagCopy);
*currentPos = sizeSound;
ret = NULL;
}

这显然给了我“tagCopy”的内存泄漏。 谁能告诉我为什么?我以为我的确非常好,但这是我发现内存泄漏的唯一地方。

谢谢。

1 个答案:

答案 0 :(得分:4)

您在该例程中修改tagCopy几次,然后尝试稍后释放它。可能很危险。在调用tagCopy之前,您还要将NULL设置为free(),因此每次尝试释放NULL而不是您分配的实际内存时。