Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: [C]thắc mắc về hàm free ?

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Mặc định [C]thắc mắc về hàm free ?

    Cho mình hỏi cái câu lệnh free(p) này thực sự nó làm cái gì vậy nhỉ ? Theo như sách vở thì nó sẽ huỷ vùng nhớ do con trỏ p trỏ tới . Mình thử như sau :

    Code:
    int *a=(int*)malloc(sizeof(int));
    free(a);
    Chạy từng bước chương trình bằng phím F7 . Đến dòng cấp phát thì thấy điạ chỉ do của con trỏ a là DS:08b1 . Chạy tiếp đến dòng free(a) thì thấy địa chỉ của con trỏ a là DS:061c . Vậy thì nó có huỷ cái quái gì đâu nhỉ . Chẳng qua chỉ là thay đổi địa chỉ thôi mà ?

  2. #2
    Ngày gia nhập
    12 2006
    Bài viết
    72

    Bạn hiểu đúng vấn đề rồi đó, khi hủy thì sẽ có 2 việc cần làm: việc thứ nhất là thay đổi địa chỉ của con trỏ a , thứ hai là thay đổi quyền ưu tiên trên vùng nhớ mà con trỏ a đã trỏ tới, đại khái là dữ liệu khác có mức ưu tiên cao hơn có thể được ghi trên vùng nhớ mà con trỏ a đã trỏ tới.
    Bởi vì khi một biến được khai báo thì khi xóa nó thực chất là thay đổi nội dung và địa chỉ của nó, nó chỉ thực sự được xóa khi kết thúc chương trình.

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    224

    À , ra thế . Cám ơn bạn nhiều . Mình hỏi cái này vì mình đang muốn xoá tất cả các nút trong cây nhị phân tìm kiếm . Hàm như sau :
    Code:
    void huycay(nut *&root)
    {
     if(root){
    	   huycay(root->left);
    	   huycay(root->right);
    	   free(root);
    	  }
    }
    Ý mình là giả sử như có 1 cấu trúc cây rồi . Bây giờ muốn huỷ nó ấy mà . Nhưng khi mình gọi hàm trên xong . Gọi tiếp hàm duyệt cây để in ra xem thử nó có huỷ hết chưa thì thấy nó ...vẫn in ra cấu trúc cây như cũ ngoại trừ nút đầu biến mất . Bạn giúp mình với ?
    Code:
    void LRN(nut *&root)
    {
     ì(root) {
                LRN(root->left);
                LRN(root->right);
                printf("%d",root->data);
               }
    }

Các đề tài tương tự

  1. Lập trình C Từng bước thêm thư viện đồ họa cho C-Free như thế nào?
    Gửi bởi pctester2020 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 03-10-2012, 11:48 AM
  2. thắc mắc về C free
    Gửi bởi v_huster38 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 17-12-2011, 12:54 PM
  3. Tạo Free textbox trong C# như thế nào?
    Gửi bởi SComMax trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 10-04-2011, 06:33 PM
  4. Free Movie Downloads Sites | Download Free Full Length Movies:MovieServe.Net
    Gửi bởi digiman87 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 30-03-2011, 10:15 AM
  5. Free Movie Downloads- The Best Sites for Free Movies-MovieServe.Net
    Gửi bởi digiman87 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 28-03-2011, 02:17 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn