0
我有這樣的代碼:的ipad,需要有一個內存泄漏的幫助
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」內存泄漏。 誰能告訴我爲什麼?我以爲我有這個不錯的,但這是唯一的地方,我得到一個內存泄漏。
謝謝。
嗯,你有什麼建議如何解決它? – funckymonk 2010-07-16 04:28:06
說得好。最好使用數組語法('tagCopy [i]')或別名指針。修改'tagCopy'使其更難分析。 – 2010-07-16 04:28:17
@funckymonk,馬修有很好的建議。我會說1)不要麻煩將其設置爲NULL,並且2)避免在例程中修改它(或者如果您願意,可以保存原始指針的副本以便隨後釋放)。 – 2010-07-16 05:01:04