我在类似问题的答案之一中已经看到了函数getFree()
,但是字符串cpy
仍然具有第一次给出的相同字符串,其运行次数即T次。所以,请有人帮忙。
void getFree(char ** ptr) {
if (*ptr != NULL) {
free(*ptr);
}
return;
}
int main() {
int T, j;
scanf("%d", &T);
for (j = 0; j < T; j++) {
char * cpy,
int count = 0, i = 0, x = 0, k = 0;
cpy = (char*)malloc(500 * sizeof(char));
if (getchar() == '\n') {
do {
*(cpy + i) = getchar();
i++;
} while(*(cpy + i - 1) != '\n');
}
getFree(&cpy);
printf("%s", cpy);
}
return 0;
}
最佳答案
Free使指针无效,但不更改值。如果那是您想要的,则应将其清零。释放它之后,它指向的对象是不确定的,但是可能会包含最后的东西,直到被重用。
free(*ptr);
*ptr = NULL;
关于c - 使用free()不能释放内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31436825/