Gou*_*eru -3 c string malloc free
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;
}
Run Code Online (Sandbox Code Playgroud)
Free使指针无效,但不会更改值.如果那是你想要的,你应该把它归零.在释放它之后,它指向的是未定义的,但可能包含其中的最后一项,直到它被重用.
free(*ptr);
*ptr = NULL;
Run Code Online (Sandbox Code Playgroud)