01/10/2018, 00:38
Toán tử new, delete trong c++ hoạt động như thế nào, dùng để làm gì?
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
Bài liên quan
Toán tử new dùng để cấp phát bộ nhớ cho 1 con trỏ.
VD:
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:
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ớ, …
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 ?
Thế này nhé.
Trong bộ nhớ ảo của máy được chia làm 4 phần.
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ớ.
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:
Hiểu 1 cách nôm na là cho con trỏ
a
trỏ tới biếnx
kiểuint
đã đượ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.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 ?
Đúng rồi.
em cảm ơn a nhiều e hiểu r
Like và subscribe đi nào
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á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