1. Trang chủ
  2. » Thể loại khác

quan ly bo nho trong c

3 119 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 178,73 KB

Nội dung

http://vietjack.com/lap_trinh_c/index.jsp                                                                                                              Copyright  ©  vietjack.com     Quản lý nhớ C Chương giải thích cách quản lý nhớ động ngơn ngữ C Ngơn ngữ lập trình C cung cấp vài hàm khác cho việc cấp phát quản lý nhớ Những hàm tìm thấy Header file STT Hàm Miêu tả void *calloc(int tongkichco, int kichco); Hàm cấp phát mảng phần tử có tổng kích thước làtongkichco mà kích cỡ phần tử tính byte làkichco void free(void *diachi); Hàm giải phóng khối nhớ xác định diachi void *malloc(int tongkichco); Hàm cấp phát nhớ động với kích thước tongkichco void *realloc(void *diachi, int kichco_moi); Hàm để thay đổi kích cỡ nhớ cấp phát thành kích cỡ mớikichco_moi Cấp phát nhớ động C Khi bạn lập trình, bạn phải nhận thức độ lớn mảng, sau dễ dàng cho việc định nghĩa mảng Ví dụ, bạn lưu trữ tên người nào, lên tới tối đa 100 ký bạn định nghĩa sau: char ten_mang[100]; Bây xem xét trường hợp bạn khơng có ý tưởng độ lớn mảng bạn dự định lưu trữ, ví dụ bạn muốn lưu trữ miêu tả chi tiết chủ đề Tại bạn cần định nghĩa trỏ tới ký tự mà không định nghĩa nhớ yêu cầu sau dựa vào yêu cầu cấp phát nhớ ví dụ đây: http://vietjack.com/                                                                                                                              Trang  chia  sẻ  các  bài  học  online  miễn  phí     http://vietjack.com/lap_trinh_c/index.jsp                                                                                                              Copyright  ©  vietjack.com     #include #include #include int main() { char tennhanvien[100]; char *mieuta; strcpy(tennhanvien, "Tran Minh Chinh"); /* Cap phat bo nho dong */ mieuta = (char *) malloc(200); if( mieuta == NULL ) { fprintf(stderr, "Error - khong the cap phat bo nho theo yeu cau\n"); } else { strcpy( mieuta, "Chinh la nhan vien IT co nang luc chem gio tot!!!"); } printf("Ten nhan vien la: %s\n", tennhanvien ); printf("Mieu ta: %s\n", mieuta ); printf("\n===========================\n"); printf("VietJack chuc cac ban hoc tot! \n"); } Biên dịch chạy chương trình C cho kết Chương trình viết sử dụng calloc(), thay cho malloc sau: mieuta = (char*)calloc(200, sizeof(char)); Như bạn hoàn toàn điều khiển việc cấp phát nhớ bạn truyền giá trị kích cỡ cấp phát nhớ, khơng giống mảng có độ dài cố định thay đổi Thay đổi giải phóng nhớ C Khi chương trình bạn kết thúc, hệ điều hành tự động giải phóng nhớ cấp phát cho chương trình, thực tế bạn không cần nhớ nữa, bạn nên giải phóng nhớ cách sử dụng hàm free() Một cách khác, bạn tăng giảm cỡ khối nhớ cấp phát cách gọi hàm realloc() Hãy kiểm tra chương trình lại lần sử dụng hàm realloc() free(): #include #include #include int main() { char tennhanvien[100]; char *mieuta; strcpy(tennhanvien, "Tran Minh Chinh"); /* Cap phat bo nho dong */ mieuta = (char *) malloc(100); if( mieuta == NULL ) { fprintf(stderr, "Error - khong the cap phat bo nho theo yeu cau\n"); } else { strcpy( mieuta, "Chinh la nhan vien IT co nang luc chem gio tot!!!"); } /* Gia su ban muon luu tru mot mieuta nho hon */ mieuta = (char*)calloc(50, sizeof(char)); if( mieuta == NULL ) { fprintf(stderr, "Error - khong the cap phat bo nho theo yeu cau\n"); } else { strcat( mieuta, "Anh ta rat gioi!!!"); } http://vietjack.com/                                                                                                                              Trang  chia  sẻ  các  bài  học  online  miễn  phí     http://vietjack.com/lap_trinh_c/index.jsp                                                                                                              Copyright  ©  vietjack.com     printf("Ten nhan vien: %s\n", tennhanvien ); printf("Mieu ta: %s\n", mieuta ); /* giai phong bo nho voi ham free() */ free(mieuta); printf("\n===========================\n"); printf("VietJack chuc cac ban hoc tot! \n"); } Biên dịch chạy chương trình C cho kết Bạn thử ví dụ mà khơng sử dụng việc cấp phát thêm hàm strcat() thông báo lỗi không đủ nhớ cấp phát   http://vietjack.com/                                                                                                                              Trang  chia  sẻ  các  bài  học  online  miễn  phí     ... printf("VietJack chuc cac ban hoc tot! "); } Biên dịch chạy chương trình C cho kết Chương trình viết sử dụng calloc(), thay cho malloc sau: mieuta = (char*)calloc(200, sizeof(char)); Như bạn... printf("VietJack chuc cac ban hoc tot! "); } Biên dịch chạy chương trình C cho kết Bạn thử ví dụ mà khơng sử dụng vi c cấp phát thêm hàm strcat() thông báo lỗi không đủ nhớ c p phát   http://vietjack.com/... phóng nhớ c p phát cho chương trình, th c tế bạn không c n nhớ nữa, bạn nên giải phóng nhớ c ch sử dụng hàm free() Một c ch kh c, bạn tăng giảm c khối nhớ c p phát c ch gọi hàm realloc() Hãy kiểm

Ngày đăng: 02/12/2017, 14:16

TỪ KHÓA LIÊN QUAN

w