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

Đề tài: Bộ nhớ heap về stack ??

  1. #1
    Ngày gia nhập
    06 2007
    Bài viết
    1

    Mặc định Bộ nhớ heap và stack ??

    Mình nghĩ vấn đề này có thể coi là căn bản đối với những bạn theo lập trình, nhưng chắc rằng vẫn có rất nhiều người chưa hiểu thật sự rõ về vấn đề này ( cách sử dụng, ý nghĩa, khái niệm của nó) , và mình là một trong số đó .

    Mình mở topic này là mong được các bro đã hiểu rõ về bộ nhớ heap và stack có thể giải thích lại để mọi người cùng nắm vững hơn, mong mọi người cùng chia sẻ !!
    Thanks
    Đã được chỉnh sửa lần cuối bởi iwtbapd : 05-03-2009 lúc 02:03 PM.

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

    Trích dẫn Nguyên bản được gửi bởi iwtbapd Xem bài viết
    Mình nghĩ vấn đề này có thể coi là căn bản đối với những bạn theo lập trình, nhưng chắc rằng vẫn có rất nhiều người chưa hiểu thật sự rõ về vấn đề này ( cách sử dụng, ý nghĩa, khái niệm của nó) , và mình là một trong số đó .

    Mình mở topic này là mong được các bro đã hiểu rõ về bộ nhớ heap và stack có thể giải thích lại để mọi người cùng nắm vững hơn, mong mọi người cùng chia sẻ !!
    Thanks
    hay đấy mình hiểu vấn đề này không chắc lắm, cao nhân nào biét thì giảng cho các đồng bào cùng nghe với
    Time

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

    Heap là vùng nhớ lưu các biến toàn cục ( biến nằm ngoài hàm ), một số hằng và các biến cấp phát động. Stack là vùng nhớ tạm để lưu biến nằm trong hàm và địa chỉ trả về sau khi kết thúc hàm. Dos thì heap được trỏ bởi thanh ghi cs và stack được trỏ bởi thanh ghi ss. Trong win thì stack và heap cùng nằm chung trên ko gian địa chỉ ảo nhưng khác địa chỉ cơ sở với nhau. THường thì heap được nới rộng lên còn stack thì mở rộng xuống dưới như hình sau :

    PHP Code:
    Heap                           Stack
    --------------->|<---------------- 
    Vùng ranh giữa heap vào stack thường biến động, stack nhiều thì heap ít hoặc ngược lại. Nếu cả 2 cùng nhiều và vượt qua ranh giới thì sẽ làm crash chương trình.
    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.

  4. #4
    Ngày gia nhập
    01 2009
    Bài viết
    201

    có 5 vùng bộ nhớ trên máy tính được chia ra như sau
    * 1. Vùng Const Data : chứa string literal như "hello" và các giá trị data mà giá trị của nó được biết tại compiler-time . Đây là vùng read-only và compiler có thể sử dụng thông tin này để tiến hành "tối ưu" khi tạo ra code ...

    * 2. Vùng Stack : chứa các biến automatic (biến local) hoặc chứa các đối số khi gọi function . Cấp phát trong vùng Stack thì nhanh hơn cấp phát "động" (xem Free Store và Heap ở dưới)

    * 3. Vùng Free Store : dùng để cấp phát memory "động" thông qua new/delete

    * 4. Vùng Heap : dùng để cấp phát memory "động" thông malloc/free

    * 5. Vùng Global/Staic : dùng để chứa các biến static, global .... "được tính toán và cấp phát 1 lần, ngay khi khởi động chương trình, và giữ nguyên trong suốt thời gian chương trình chạy, như vậy có nhược điểm là nếu kích thước lớn quá sẽ chiếm dụng nhiều bộ nhớ hệ thống => bạn không chủ động bỏ bớt đi được nếu không cần nó nữa, nó chỉ bị xóa bỏ khi chương trình kết thúc, vì thế chương trình của bạn nên có bộ nhớ tĩnh càng nhỏ càng tốt, chỉ khai báo trong bộ nhớ tĩnh những cái cần thiết." ( như et đã đề cập trong bài viết ở phía dưới)
    Nguồn

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

  1. Cấu trúc dữ liệu Chuyển các phần tử từ stack này sang stack kia như thế nào?
    Gửi bởi rukawa1184 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 9
    Bài viết cuối: 06-12-2011, 06:52 PM
  2. Sự khác nhau của Heap Size và Array Length của mảng tạo thành Heap
    Gửi bởi cutithongtin 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: 05-01-2011, 04:35 PM
  3. which faster Heap VS Stack ? --> Why ?
    Gửi bởi C&C++ trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 27-08-2010, 05:41 PM
  4. hỏi cách đo heap và stack trong dev-cpp
    Gửi bởi hashas 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: 23-06-2010, 10:56 AM
  5. Code về stack | Chuyển hệ số 10 sang 2 dùng stack
    Gửi bởi ahappyboy89 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 17-04-2009, 09:48 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