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

Đề tài: Delete 1 con trỏ 2 lần trên Code::Blocks không xảy ra lỗi gì?

  1. #1
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Mặc định Delete 1 con trỏ 2 lần trên Code::Blocks không xảy ra lỗi gì?

    Nếu 1 mình code sau :
    PHP Code:
            intp1=new int(12);
        
    cout<<*p1<<endl;
        
    intp2=p1;
        
    delete p1;
        
    delete p2;
        *
    p2++;
        
    cout<<*p2<<endl
    Theo mình nghĩ thì code trên sẽ sinh ra lỗi ở chỗ delete p2 vì đã delete p1 rồi,p2 vẫn chưa được new đến vùng nhớ khác. Nhưng mình test trên Code::Blocks vẫn không có lỗi gì,mặc dù lệnh cout<<*p2<<endl; chỉ in ra giá trị 0 chứng tỏ p2=null. Nhưng theo mình thì phải có error chứ? làm sao có thể delete p2 khì mà chưa new cho nó.
    P/s : VC++ đang bị lỗi nên chưa test được trên VC++. Nhân tiện nhờ mọi người giúp luôn,cái VC không hiểu sao cứ báo MSVCP80D.DLL, phải chuyến sang realease.Bây giờ thì die hoàn toàn rùi,mà tình trạng này rất hay gặp kể cả đã re íntall
    Cánh Chym ứ mỏi

  2. #2
    Ngày gia nhập
    06 2008
    Bài viết
    25

    Giá trị của p2 là ko thay đổi, cout<<*p2<<endl; ra 0 nghĩa là vùng nhớ mà p2 chỉ đến đang chứa vài ba con 0 ở đó (chắc là bãi rác).
    Còn ko nhất thiết là nó fải báo error, có thể lúc có lúc ko thôi, có thể crash luôn, nói chung là undefined behaviour. Chắc ví dụ này đơn giản nên nó vẫn chạy.

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    - Chắc không có lỗi không ? CodeBlock của r2 crash cái đùng đây nè ?

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Báo cáo : VC6 báo lỗi assert khi chạy qua dòng delete p2.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    @ R2 : tớ chả thấy code::blocks của tớ ý kiến gì cả T_T.
    @ meo : thế là thỏa mãn rồi .
    @ all : thế còn cái lỗi của VC 2005,ai có cách nào khắc phục giúp mình với :(
    Cánh Chym ứ mỏi

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định Delete 1 con trỏ 2 lần trên Code::Blocks không xảy ra lỗi gì?

    Trích dẫn Nguyên bản được gửi bởi dieucay555 Xem bài viết
    @ all : thế còn cái lỗi của VC 2005,ai có cách nào khắc phục giúp mình với :(
    B1 : build > clean
    B2 : thoát vc2k5 xóa cái file .ncb nằm kế file .sln trong thư mục source
    B3 : vào thư mục windows search với từ khóa "msvcp80d*.pdb" vào xóa
    B4 : chạy lại vc2k5 thử xem hết chưa

    Chúc thành công !
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  7. #7
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Bạn thiếu file dll nào thì lên web down nó về chép vô system32 là chạy được à, hồi trước mình cũng bị thế.

  8. #8
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Thanks Meo,đã sửa được rồi.Cảm ơn bạn nhiều
    Cánh Chym ứ mỏi

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

  1. cài đặt Code::blocks trên Ubuntu
    Gửi bởi AlexF trong diễn đàn Thủ thuật, Tutorials và Mã nguồn
    Trả lời: 24
    Bài viết cuối: 27-04-2014, 07:26 PM
  2. Lập trình C Cài đặt code blocks trên win7 x64 ultimate như thế nào?
    Gửi bởi caibao trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 15-11-2011, 09:10 PM
  3. wxWidgets "cannot find -lwxmsw29u_core" khi build trên Code::Blocks
    Gửi bởi tauit_dnmd trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 2
    Bài viết cuối: 07-07-2011, 12:07 AM
  4. Vấn đề với code blocks
    Gửi bởi PCthanyeu trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 02-04-2010, 10:10 PM
  5. Code::Blocks in Ubuntu
    Gửi bởi linhdeptrai trong diễn đàn Công cụ, ebooks VC++
    Trả lời: 6
    Bài viết cuối: 18-10-2008, 02:03 AM

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