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.

Mai Anh Dũng viết 20:25 ngày 30/09/2018

Em đọc câu trả lời này xem

stackoverflow.com
alfesani

sizeof void pointer

c, void-pointers
asked by alfesani on 07:23AM - 04 Oct 10

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.

Thành Thái Nguyễn viết 20:22 ngày 30/09/2018

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

Minh Hoàng viết 20:22 ngày 30/09/2018

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,…)

Bài liên quan
0