Hàm realloc () trong Thư viện C: Làm thế nào để sử dụng? Học với ví dụ

Mục lục:

Anonim

Realloc () là gì?

realloc () là một hàm của thư viện C để thêm kích thước bộ nhớ vào các khối bộ nhớ đã được cấp phát. Mục đích của phân bổ lại trong C là để mở rộng các khối bộ nhớ hiện tại trong khi vẫn giữ nguyên nội dung ban đầu. Hàm realloc () giúp giảm kích thước của bộ nhớ đã được cấp phát trước đó bởi các hàm malloc hoặc calloc. realloc là viết tắt của phân bổ lại bộ nhớ.

Cú pháp cho realloc trong C

ptr = realloc (ptr,newsize);

Câu lệnh trên cấp phát một không gian bộ nhớ mới với kích thước được chỉ định trong biến newsize. Sau khi thực hiện hàm, con trỏ sẽ được trả về byte đầu tiên của khối bộ nhớ. Kích thước mới có thể lớn hơn hoặc nhỏ hơn bộ nhớ trước đó. Chúng tôi không thể chắc chắn rằng nếu khối mới được cấp phát sẽ trỏ đến cùng một vị trí với vị trí của khối bộ nhớ trước đó. Hàm realloc trong C sẽ sao chép tất cả dữ liệu trước đó trong vùng mới. Nó đảm bảo rằng dữ liệu sẽ vẫn an toàn.

Ví dụ:

#include int main () {char *ptr;ptr = (char *) malloc(10);strcpy(ptr, "Programming");printf(" %s, Address = %u\n", ptr, ptr);ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new sizestrcat(ptr, " In 'C'");printf(" %s, Address = %u\n", ptr, ptr);free(ptr);return 0;} 

Cách sử dụng realloc ()

Chương trình dưới đây trong C trình bày cách sử dụng realloc trong C để phân bổ lại bộ nhớ.

#include #include int main() {int i, * ptr, sum = 0;ptr = malloc(100);if (ptr == NULL) {printf("Error! memory not allocated.");exit(0);}ptr = realloc(ptr,500);if(ptr != NULL)printf("Memory created successfully\n");return 0;}

Kết quả của phân bổ lại trong ví dụ C:

Memory created successfully

Bất cứ khi nào khối phân bổ lại dẫn đến một hoạt động không thành công, nó sẽ trả về một con trỏ null và dữ liệu trước đó cũng được giải phóng.