Toán Tử New, Delete Trong C++ Hoạt động Như Thế Nào, Dùng để Làm Gì? Trang chủ » Toán Tử New Trong C » Toán Tử New, Delete Trong C++ Hoạt động Như Thế Nào, Dùng để Làm Gì? Có thể bạn quan tâm Toán Tử New Trong Java Toán Tử Nối Văn Bản Trong Excel Là Toán Tử Not In Trong Sql Toán Tử Not Là Phép Toán Thuộc Nhóm Nào Toán Tử N Trong Biểu Thức được Hiểu Là Toán tử new, delete trong c++ hoạt động như thế nào, dùng để làm gì? programming c++ Thanh_Le2 (Thành Lê) May 26, 2018, 2:11am #1 Em mới đọc sách sách sang phần này nhưng vẫn ko hiểu , xin A/C giải đáp thắc mắc e là new và delete hoạt động như thế nào ? nó để làm gì ạ ? Em cảm ơn 4 Likes tcm (Người bí ẩn) November 2, 2016, 1:35pm #2 Toán tử new dùng để cấp phát bộ nhớ cho 1 con trỏ. VD: int *a = new int; // cấp phát bộ nhớ cho con trỏ a thuộc kiểu int (4 bytes) double *arr = new double[5]; // cấp phát 5 ô nhớ cho mảng arr thuộc kiểu double (8 bytes) Còn toán tử delete dùng để giải phóng 1 con trỏ đã được cấp phát trước đó, còn nếu đó là 1 mảng thì dùng delete[] VD: int *a = new int; // do_something; delete a; // giải phóng con trỏ a đã cấp phát ở trên double *arr = new double[5]; // do_something; delete[] arr; // giải phóng mảng arr đã được cấp phát ở trên Còn cấp phát và giải phóng để làm gì thì bạn sẽ được học khi học tới con trỏ nhé. Hoặc có thể dùng tính năng search của diễn đàn để tìm những bài viết nói về con trỏ, cấp phát động, giải phóng bộ nhớ, … 5 Likes Thanh_Le2 (Thành Lê) November 2, 2016, 1:39pm #3 E đang học tới phần con trỏ , nhưng theo en ghĩ là khi khai biến bất kỳ ví dụ như : int x thì x đã được cấp phát bộ nhớ . Vậy cần gì phải có new vậy a ? tcm (Người bí ẩn) December 27, 2020, 5:14pm #4 Thế này nhé. Trong bộ nhớ ảo của máy được chia làm 4 phần. Code segment: Là nơi chứa mã máy dạng nhị phân Data segment: Là nơi chứa các biến tĩnh (static) và biến toàn cục Heap: Là vùng nhớ không do CPU quản lý, lập trình viên phải tự quản lý vùng nhớ này. Hay nói các khác, đây là vùng nhớ dành cho con trỏ Stack: Đây là vùng nhớ do CPU quản lý, lập trình viên không được phép "can thiệp" vào vùng nhớ này. Vùng nhớ này chứa các biến cục bộ Khi bạn tạo biến x bằng cách `int x;` thì nó sẽ được tạo trong vùng nhớ Stack. Mà khi được tạo trong Stack thì bạn không được phép "can thiệp" như giải phóng (delete) , .... Thanh_Le2: Vậy cần gì phải có new vậy a Không cần bạn nhé. Khi nào tạo biến con trỏ thì mới cần cấp phát bộ nhớ. 10 Likes Thanh_Le2 (Thành Lê) November 2, 2016, 2:03pm #5 Vậy là int* a = int x , cái chỗ int x là do mình cấp phát bộ nhớ cho biến đó và cũng có thế xóa đi bằng delete . Em hiểu vậy đúng ko a ? tcm (Người bí ẩn) November 2, 2016, 2:06pm #6 Thanh_Le2: Vậy là int* a = int x , cái chỗ int x là do mình cấp phát bộ nhớ cho biến đó và cũng có thế xóa đi bằng delete . Em hiểu vậy đúng ko a ? Không có vụ int *a = int x đâu nhé. Như thế này thì được: int x; int *a = &x; Hiểu 1 cách nôm na là cho con trỏ a trỏ tới biến x kiểu int đã được khởi tạo trong Stack. Trong trường hợp này, cả 2 đều nằm trong Stack nên không thể giải phóng bằng toán tử delete … và con trỏ a cũng không cần phải cấp phát khi đã trỏ tới thằng khác. 2 Likes Thanh_Le2 (Thành Lê) November 2, 2016, 2:20pm #7 Vậy là cái int * pt = new int , cái biến trỏ này giúp mình tự tạo ra biến này rồi mình tự hủy được . Không như biến int x ; nó không tự hủy được vì nó nằm trong vùng hệ thống của CPU . Phẩi hông a ? tcm (Người bí ẩn) November 2, 2016, 2:22pm #8 Thanh_Le2: Vậy là cái int * pt = new int , cái biến trỏ này giúp mình tự tạo ra biến này rồi mình tự hủy được Đúng rồi. 3 Likes Thanh_Le2 (Thành Lê) November 2, 2016, 2:23pm #9 em cảm ơn a nhiều e hiểu r 1 Like tcm (Người bí ẩn) November 2, 2016, 2:24pm #10 Like và subscribe đi nào 16 Likes 4xstop (Minh Luong) November 3, 2016, 4:28am #11 Người bí ẩn cho e hỏi, ứng dụng của việc cấp phát bộ nhớ cho con trỏ là gi, nó được dùng làm gì trong thực tế ạ? 1 Like tcm (Người bí ẩn) November 3, 2016, 4:38am #12 Cái này mình cũng không rõ lắm. Thực ra, con trỏ dùng để áp dụng cho mảng động là chính. Chính vì sự di chuyển tự do trong bộ nhớ nên nó cũng tiện lợi nhưng dễ gây ra lỗi nếu không rành hoặc không cẩn thận Còn việc cấp phát bộ nhớ là điều hiển nhiên nếu muốn thao tác trên con trỏ, trừ khi mình đã trỏ nó tới 1 “ngôi nhà” khác ! #my_personal_idea 5 Likes FRain May 7, 2019, 1:54am #13 @tcm Như này đúng không b? int a; // biến Stack int a = new a; // là biến mình tự cấp phát nếu mình khai báo như này int a = new a; thì nó không liên quan đến biến int a; phải không b? Canh_Thanh (Cảnh Thanh) October 25, 2019, 6:10am #14 vậy cho em hỏi, sau khi giải phóng vùng nhớ bằng câu lệnh delete thì con trỏ vẫn còn trỏ tới vùng nhớ đó nhưng giá trị tại vùng nhớ đó có còn không ạ rogp10 (rogp10) October 25, 2019, 7:34am #15 4xstop: Người bí ẩn cho e hỏi, ứng dụng của việc cấp phát bộ nhớ cho con trỏ là gi, nó được dùng làm gì trong thực tế ạ? Cấp phát này gọi là “động” vì kích thước không bị cố định trong code mà đến runtime mới biết. Cấu trúc dữ liệu Áp dụng đa hình Canh_Thanh: vậy cho em hỏi, sau khi giải phóng vùng nhớ bằng câu lệnh delete thì con trỏ vẫn còn trỏ tới vùng nhớ đó nhưng giá trị tại vùng nhớ đó có còn không ạ Hên xui, chỉ có thể chắc chắn là không được truy cập vào 2 Likes KJAYTAE (Trần Duy Khánh) December 27, 2020, 5:10pm #16 Chào bạn ạ, những kiến thức trên bạn học ở tài liệu nào vậy ? Bạn chia sẽ cho mình được học với . Mình mới bắt đầu học thôi, nên rất mơ hồ, mong bạn giúp đỡ. Mình cảm ơn ạ. rogp10 (rogp10) December 27, 2020, 5:51pm #17 Đó là cấu trúc file thực thi trong một hệ điều hành. Đào sâu vào thêm thì còn chỗ nạp thư viện ngoài nữa. 2 Likes DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Toán Tử New Trong C Hàm Delete Và New Trong C Có Nghĩa Gì??? Chi Tiết Bài Học Quản Lý Bộ Nhớ Trong C++: New Và Delete - Vimentor [Tự Học C++] Cấp Phát Bộ Nhớ động Với Từ Khóa New Và Delete Bộ Nhớ động Trong C/C++ Con Trỏ Và Cấp Phát động Trong C++ | TopDev Cách Hoạt động Của Lệnh New Trong Ngôn Ngữ Lập Trình C++? - FUNiX Bài 4 Toán Tử New Và Cấp Phát Bộ Nhớ Cho Con Trỏ - YouTube Các Mở Rộng Của C++ - Toán Tử New Và Delete - .vn Sự Khác Biệt Giữa Toán Tử Mới Và Xóa Trong C ++ Là Gì - Strephonsays Sự Khác Biệt Giữa Toán Tử Delete Và Delete[] Trong C++ Cấp Phát động Trong C++ (Dynamic Memory Allocation). | How Kteam `New` Trong` New Int; `có được Coi Là Một Toán Tử Không? - HelpEx Toán Tử New Trong Javascript - Viblo Sự Khác Biệt Giữa New Và Malloc () Cấp Phát Động Trong C++ — Modern C++ - STDIO Bộ Nhớ động Trong C++ Toan Tu New C++ | Lội-suố Kỹ Thuật Cấp Phát Bộ Nhớ động Và Minh Họa Với C++ - Góc Học IT Bộ Nhớ động Trong C/C++ - Hoclaptrinh