Tin học đại cương - bài 10: bộ nhớ động kiểu dữ liệu co cấu trúc

Biến động là biến được “tạo” ra khi chạy chương trình. Thông qua con trỏ, vùng nhớ biến được cấp phát và quản lý. Các hàm thao tác vùng nhớ trên C được định nghĩa trong thư viện hoặc Các hàm cấp phát và giải phóng bộ nhớ Hàm malloc Hàm calloc Hàm realloc Hàm free | TIN HỌC ĐẠI CƯƠNG BÀI 10 BỘ NHỚ ĐỘNG KIỂU DỮ LIỆU CÓ CẤU TRÚC CẤP PHÁT VÀ GIẢI PHÓNG BỘ NHỚ ĐỘNG 9 NỘI DUNG NỘI DUNG BÀI BỘ NHỚ ĐỘNG Khái niệm biến “động” Các hàm cấp phát bộ nhớ Hàm malloc Hàm calloc Hàm realloc Hàm giải phóng bộ nhớ Hàm free BIẾN ĐỘNG Biến động là biến được “tạo” ra khi chạy chương trình. Thông qua con trỏ, vùng nhớ biến được cấp phát và quản lý. Các hàm thao tác vùng nhớ trên C được định nghĩa trong thư viện hoặc Các hàm cấp phát và giải phóng bộ nhớ Hàm malloc Hàm calloc Hàm realloc Hàm free HÀM MALLOC / HÀM FREE Chức năng của hàm malloc là gọi cấp phát một vùng nhớ có kích thước size: void *malloc(size_t size); Ví dụ: int *p; p=(int *) malloc(100); p=(int *) malloc(80*sizeof(int)); Hàm free được dùng để giải phóng một vùng nhớ đã được cấp phát thông qua con trỏ prt: void free(void *ptr); #include #include #include void main(void) { char *str; /* allocate memory for string */ str = (char *) malloc(10); /* copy "Hello" to string */ strcpy(str, "Hello"); /* display string */ printf("String is %s\n", str); /* free memory */ free(str); } VÍ DỤ HÀM CALLOC VÀ REALLOC Bên cạnh hàm malloc, một vùng nhớ còn có thể được cấp phát bằng hàm calloc và cấp phát lại bằng hàm realloc. Hàm calloc cấp phát một vùng nhớ có kích thước nitems* size bytes. void *calloc(size_t nitems, size_t size); Hàm realloc điều chỉnh lại vùng nhớ đã được cấp phát block, với kích thước mới là size bytes. void *realloc(void* block, size_t size); BỘ NHỚ ĐỘNG VÀ MẢNG 1 CHIỀU Cấp phát vùng nhớ n phần tử cho biến con trỏ int *a : a = (int *)malloc(n*sizeof(int)); a =(int *)calloc(n, sizeof(int)); Kiểm tra cấp phát thành công và thực hiện các thao tác tiếp (như đối với mảng): if(a!=NULL) { // dùng như mảng cho a[0], a[1], free(a); } BỘ NHỚ ĐỘNG VÀ MẢNG 2 CHIỀU a = (int **)malloc(m*sizeof(int *)); if(a!=NULL) { kt=0; for(i=0; i #include #include void main(void) { char *str; /* allocate memory for string */ str = (char *) malloc(10);

Không thể tạo bản xem trước, hãy bấm tải xuống
TÀI LIỆU MỚI ĐĂNG
544    157    4    04-05-2024
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.