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

Đề tài: new và delete | có thể xóa một con trỏ không còn trỏ vào phần tử đầu tiên của mảng?

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

    Mặc định new và delete | có thể xóa một con trỏ không còn trỏ vào phần tử đầu tiên của mảng?

    Như mình được biết thì khi cấp phát cho chính con trỏ nào thì phải delete chính con trỏ đấy . Tôi có code sau

    C++ Code:
    1. #include<iostream>
    2. using namespace std;
    3. int main()
    4. {
    5.     int* p=new int[10];
    6.     ++p;
    7.     delete[] p;
    8.     return 0;
    9. }
    Sau lệnh ++p thì p đã không còn trỏ vào phần tử đầu tiên của mảng mà tôi delete lại không bị lỗi?
    Cánh Chym ứ mỏi

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

    Mình cũng không rõ, nhưng mình chạy thử thì bị lỗi mà(run time)

  3. #3
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Tùy vào cậu dùng compiler gì, môi trường OS nào.
    Trên VC++, nếu RTL dùng library riêng để quản lý heap memory, nó sẽ quản lý danh sách các ptr đã được cấp + size + mark...
    Khi cậu xóa p ở trên, p vẫn trỏ tới vùng nhớ cấp phát cho int[10] (sau khi đã ++), nên không lỗi. Nếu ngoài thì die.

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    447

    Mình dịch và chạy thử bằng MSVC++, Debug mode thì phát hiện được lỗi này khi chạy.

  5. #5
    Ngày gia nhập
    08 2006
    Nơi ở
    Mountain Clans
    Bài viết
    4

    Lỗi hay không còn tùy nữa, vì nó sẽ delete từ địa chĩ p+1 đến p+11 nếu p+11 là một ô của vùng nhớ được cấp cho một chương trình khác, bị cấm truy cập sẽ bị lỗi, còn ngược lại thì không.
    Đã được chỉnh sửa lần cuối bởi royevn : 18-05-2008 lúc 10:46 AM.

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

  1. Mảng trên C Cách xóa phần tử có giá trị k xuất hiện đầu tiên trong mảng
    Gửi bởi nguyenvung93 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 21-07-2013, 01:15 AM
  2. ADO.NET Xóa 1 row trên Gridcontrol bằng phím Delete
    Gửi bởi wind9k trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 04-06-2012, 12:16 PM
  3. mọi người giúp mình hàm delete xóa control với
    Gửi bởi giophieulang trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 02-06-2012, 09:07 AM
  4. thắc mắc xóa phần tử đầu tiên trong mảng
    Gửi bởi prt_awm trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 21-11-2010, 11:08 PM
  5. Xóa dữ liệu với DELETE
    Gửi bởi Xcross87 trong diễn đàn Thủ thuật, Tutorials Database
    Trả lời: 3
    Bài viết cuối: 14-11-2007, 08:20 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