30/09/2018, 18:17
Kích thước của con trỏ void*
kích thước của void* tùy thuộc vào hệ điều hành 16, 32, 64 bit
Anh có thể nói rõ hơn về cái này không, em đang tìm hiểu thêm về con trỏ mà con trỏ void hay hay… Cảm ơn anh.
Bài liên quan
Em đọc câu trả lời này xem
sizeof void pointer
Cuốn sách bạn có thể cần để hiểu về con trỏ void: Nghệ thuật tận dụng lỗi phần mềm.
Trên lớp em có nghe Thầy nói sơ về con trỏ thì Thầy có nói con trỏ có mặc định tốn bộ nhớ là 2byte (Windows) đối với các hệ điều hành khác nhau thì Thầy không nói rõ lắm. Em thì thật sự hơi yếu tiếng Anh em mò đọc thì có dòng Typically it’s value is 4 or 8 for 32 and 64 bit platforms respectively có phải là do tùy vào hệ điều hành không anh, mà mỗi hệ điều hành thì mình có thể tính bộ nhớ như thế nào, với lại các kiểu con trỏ khác cũng cùng kích thướt như void ở cùng 1 hệ điều hành? VD: void *a; trên hệ điều hành Windows 7 32bit vậy mình có thể tính vùng nhớ của con trỏ void như thế nào, với con trỏ int.
Cuốn nghệ thuật tận dụng lỗi phần mền hôm trước em có đọc được đến hết chương 2 nhưng dừng đọc mấy tuần nay, anh có thể chỉ em biết nó thuộc phần nào để tìm hiểu cho nhanh trước đỡ được không anh.
Em cảm ơn
kích thước con trỏ tương đương với bộ nhớ RAM mà hệ điều hành có thể quản lý được. Ví dụ như hệ điều hành 32bit, thì có nghĩa là nó dùng 32 để lưu giữ địa chỉ trên RAM (tương đương với 2^32 địa chỉ ~ 4GB RAM). 32bits tương đương với 4 bytes, vậy thì con trỏ trên hệ điều hành 32bit có kích thước 4bytes.
Con trỏ int, void, float,… đều là một biến để lưu địa chỉ vì thế nó luôn có chung một kích thước (là 4 byte nếu trên hệ điều hành 32bit,…)