Giả sử e có 1 đoạn code cấp phát cho level 2-pointer như sau:
int **arr = (int **)calloc(3, sizeof(int *));
for (int i = 0; i < 3; ++i) {
arr[i] = (int *)calloc(5, sizeof(int));
}
...
thì khi em realloc lại cho con trỏ arr
với kích thước lớn hơn thì có nhất thiết phải dùng vòng lặp duyệt lại từ đầu để cấp phát cho mỗi con trỏ cấp 1 trong nó không ạ ? Hay chỉ cấp phát cho con trỏ ở cuối thôi ?
realloc(arr, 4 * sizeof(int *));
for (int i = 0; i < 4; ++i) {
arr[i] = (int *)calloc(5, sizeof(int));
}
...
hay
realloc(arr, 4 * sizeof(int *));
arr[3] = (int *)calloc(5, sizeof(int));
?
Còn nếu realloc con trỏ arr
với kích thước bé hơn thì dữ liệu trong matrix sẽ bị mất đi đúng ko ạ ?
Cảm ơn mọi người nhiều