Chào m.n mình có làm 1 bài tập trên mạng, họ cho sẵn 1 đoạn code rồi mình hoàn thành bài tập đó.
nhưng có 1 đoan mình không hiểu cho lắm
int n;
scanf("%d", &n);
char** arr;
arr = (char**)malloc(n * sizeof(char*));
for(int i = 0; i < n; i++){
*(arr + i) = malloc(1024 * sizeof(char));
scanf("%s", *(arr + i));
*(arr + i) = realloc(*(arr + i), strlen(*(arr + i)) + 1);
}
Ơ chỗ realloc mình hiểu là n đang bổ dung ô nhớ cho *(arr+i) nhưng mình không hiểu làm vậy đc ích gì?. Vd: i = 0, nhập chuỗi xong nó lại cấp phát thêm cho *(arr + 0) (strlen(*(arr + i)) + 1) ô nhớ. Ai giải thích giùm mình đc k ạ?. Mình cảm ơn!
nhập 1 phát nó sẽ tràn ra ngoài là hỏng, đọc từ từ thôi. Tức là câu realloc kế sau là vô nghĩa vì bị crash rồi.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?