thắc mắc [C] Giải thích giúp em với đoạn code free linked list

đây là ai nói hả ông nội ?:whistle::whistle:
Tôi nói, và tôi nghĩ là tôi nói đúng vì cái này tôi đọc ISO standard của C. tôi nói luôn là giải thích của ông là không chính xác, ông còn chả biết toán tử member access through pointer trong C thì ông tranh luận làm gì, đây rõ ràng là C code, nếu là C++ thì người ta dùng new với delete keyword, mà trong C++ có list class template rồi thì nguời ta viết lại làm méo gì. Tôi đã có câu trả lời và tôi không mất thời gian tranh luận vô bổ với ông nữa, bye.
 
clone của nhau cả thì tôi rep làm chi :whistle::whistle: còn muốn hỏi hẳn hoi vụ đó thì sau tôi tìm lại cho dải địa chỉ của nullptr nhé

Vãi lon clone :oops::oops:
Thì fen cứ giải thích tại sao trước khi free cái next nó chỉ tới 2 giá trị khác nhau đi. Nếu free xong giá trị bị thay đổi thì sao còn gán ngược lại vào current được nữa. Trao đổi kiến thức tí làm gì chụp mũ người khác là clone vậy fen.
 
1. Con trỏ nó chỉ là 1 giá trị 32/64 bit (tùy os)

2. free(ptr) -> tức là sẽ giải phóng vùng nhớ mà con trỏ đang trở tới. Giá trị con trỏ vẫn giữ nguyên là 1 số 32/64 bit (là địa chỉ của vùng nhớ đó).

3. Code #1 sai nhé.
Lý do sai: Free pointer current xong lại access tới current->next?

4. Code đúng thì phải lấy 1 cái temp như sau

C++:
while (head != nullptr) {
    temp = head
    head = head ->next
    free (temp)
}
 
Vâng, túm lại đoạn code trên là tệ, dù rằng nó vẫn sẽ hoạt động trong một vài trường hợp
  • Đoạn code trên của bác thì nó không clean toàn bộ danh sách mà nó chỉ free cái pointer đầu tiên, bác có thể chạy đúng nhưng mà không tối ưu ví dụ như bác có một cái dây xích cột chó, con chó thì nó đang guồng để đuổi chuột. Bác free cái current = head, tức là bác đang gỡ cái đầu cột ở cây cột, con chó chạy đi bác mất luôn cọng dây xích và con chó vẫn bị vướng vào sợi dây xích,
  • nhưng bác mò tới cuối cọng dây xích rồi đập bỏ từ dưới lên thì bác có sẽ bỏ được cọng dây xích con chó được tự do hoàn toàn.
  • hoặc trước khi bác gỡ cái mắt xích đầu tiên bác cần phải gắn cái mắt xích thứ 2 vào cây cột rồi gỡ, bác vẫn còn con chó và cọng xây xích để gỡ tiếp ^^.
 
Last edited:
Vãi lon clone :oops::oops:
Thì fen cứ giải thích tại sao trước khi free cái next nó chỉ tới 2 giá trị khác nhau đi. Nếu free xong giá trị bị thay đổi thì sao còn gán ngược lại vào current được nữa. Trao đổi kiến thức tí làm gì chụp mũ người khác là clone vậy fen.
Tại không tranh luận trước đó cứ lao vào gạch chứ sao, nhưng tôi nhận ra tôi sai rồi :sad:tôi đọc doc cứ nghĩ nó tương đương với đoạn code này bên C++

C++:
Node* p = cur;
cur = nullptr;
delete p;
 
Back
Top