Bài đăng

Hiển thị các bài đăng có nhãn virtual memory

C++ Con trỏ (Pointer) toàn thư: Phần 4: Con trỏ "đa cấp". Đánh nhau bằng con trỏ.

Hình ảnh
Ngày cuối cùng của năm 2018 rét vcđ. Buổi trưa bảo lên ngủ 20p rồi dậy thì thành ra nằm ì trong chăn đến 5hh30 pm mới thèm mò dậy! Thiện tai, thiện tai! 😑 Năm nay trên thành phố quê mình tổ chức Carnaval cũng hoành tráng lắm, nhưng khổ cái là trời lạnh vãi, mò mẫm đi đâu; khổ tập 2 là ko có người yêu; nên thôi ngồi nhà viết nốt bài cuối cùng về Con trỏ mà không liên quan đến OOP.  2019 này kỷ niệm 100 năm ngày chấm dứt Thế chiến II; hi vọng sẽ có đủ sức khỏe để học đc nhiều nùi kiến thức hơn! 😁 Quay trở lại seri Con trỏ, trong phần Dàn bài, mình đã trình bày: Phần 1: Căn bản về Con trỏ. Phần 2: Con trỏ với các cấu trúc dữ liệu căn bản. Phần 3: Con trỏ Hàm. Phần 4: Con trỏ "đa cấp". Đánh nhau bằng con trỏ. Phần 5: Con trỏ "thông minh" dành cho Lập trình viên "thông minh". Trong bài viết này, mình sẽ trình bày về Con trỏ "đa cấp" cũng như tất cả mọi lưu ý, mưu mẹo, lọc lừa và điểm nhấn quan trọng về Con trỏ từ đầu tới giờ. Đ...

C++ Con trỏ (Pointer) toàn thư: Phần 3: Con trỏ với Hàm.

Hình ảnh
Công nhận đúng là "lười" + "chủ động" + "có kiến thức" → "lười" 😂 Sau 3 4 ngày j đó, hôm nào cũng phải ngồi xử lý bằng tay mớ logging từ Kibana của con SOC, đến hôm nay, sức chịu đựng của mình đã đạt đỉnh điểm và mình quyết định "Tao ĐÉO MUỐN tốn nửa tiếng xử lý dữ liệu mỗi 2 tiếng đồng hồ trôi qua nữa, ai cho tao lương thiện!". Vậy là trong sự tức tối đó (nhưng vẫn bình tĩnh vãi đái), mình quyết định code luôn 1 chương trình C++ để xử lý mớ logging file Excel của Kibana. Sau hơn 3 tiếng đồng hồ, cuối cùng mình cũng code xong. Quẩy lên; thay vì tốn nửa tiếng như trước, giờ mình chỉ tốn chưa đến 10s để xử lý file logging của Kibana. Đó, các bạn thấy ko, cuối cùng động cơ để thúc đẩy thế giới phát triển chung quy cũng là 1 chữ LƯỜI! Nhưng điểm quan trọng nhất ở đây, trước khi LƯỜI, chúng ta cần phải "có kiến thức". Mà kiến thức thì học cả đời ko hết được! :sad:  1 điều cũng khá quan trọng ở đây, cần phải "chủ ...

C++ Con trỏ (Pointer) toàn thư: Phần 1: Căn bản về Con trỏ.

Trong bài " Dàn bài ", mình đã đưa ra dàn bài về seri bài viết Con trỏ như sau: Phần 1: Căn bản về Con trỏ. Phần 2: Con trỏ với các cấu trúc dữ liệu căn bản. Phần 3: Con trỏ với Hàm. Phần 4: Con trỏ "đa cấp", đánh nhau bằng "con trỏ". Phần 5: Con trỏ "thông minh" dành cho Lập trình viên "thông minh". Và đây chính là bài viết đầu tiên trong seri Con trỏ: Căn bản về Con trỏ. Định nghĩa con trỏ. Phải nhớ: "Con trỏ chỉ là 1 biến NGUYÊN "! Nó cũng là 1 biến, và giá trị của nó là 1 số NGUYÊN , thuộc tập SỐ NGUYÊN Z ! Trong chương trình C++, con trỏ lưu trữ giá trị nguyên là địa chỉ ảo  của biến mà nó trỏ đến! Ví dụ như là 0x1a651995, 0x2cd139e, ... Bạn thấy đó, các số hexa kia chẳng qua là dạng viết ngắn gọn của địa chỉ ô nhớ ảo mà Hệ điều hành cung cấp cho vùng nhớ STACK của chương trình. Mà đã là địa chỉ thì nó phải là số nguyên  rồi!  Do đó, từ bây giờ, nếu có gặp khai báo  data_type *p; thì bạn phải nhớ p cũ...

Smart Pointer trong C++? Nó cũng chỉ là 1 "đối tượng" thôi, dễ hiểu mà!

Hình ảnh
Đây là bài viết đầu tiên của mình về 1 chức năng của 1 ngôn ngữ lập trình riêng: "Con trỏ thông minh (Smart pointer) trong C++". Tạm gác qua mọi "ác cảm" của thế giới với C++, cũng như "con trỏ", mình sẽ giới thiệu khái quát một cách "vô cùng dễ hiểu" về Smart pointer trong C++ trước. Có thời gian, mình sẽ viết 1 seri bài viết nói về "con trỏ" của C++; và đương nhiên trong đó, mình sẽ viết đầy đủ toàn bộ về Smart Pointer.  (nguồn: TeckTalk Fb fanpage) Vì sao lại là Smart Pointer? Khác j Pointer thông thường? Đúng vậy, vì nó "thông minh" hơn, nên nó được gọi là Smart Pointer  thôi; còn thằng Pointer cổ điển thì là Stupid Pointer  chứ sao! Vì nó "smart" hơn nên nó có nhiều khác bọt so với Pointer chứ.  Trong C/C++, có 2 vùng bộ nhớ để lưu lại các biến, gọi là Stack  và Heap . Khi bạn khai báo một biến mới mà dùng từ khóa new  thì biến đó được quẳng vào Heap, còn nếu ko dùng new  thì nó sẽ được quẳng vào ...