01/10/2018, 14:41

'*(void**)pMem = pMem' có nghĩa là gì?

Xin chào mọi người, em có 1 câu hỏi mong mọi người giải đáp giúp.Trong quá trình đọc sách e có gặp 1 đoạn chương trình sau, trong đó con trỏ pMem kiểu void được cấp phát bởi hàm malloc():
static void markMem(void* pMem) { *(void**)pMem = pMem; }
mong mọi người giải đáp cho em ý nghĩa của dòng lệnh số 2 với ạ. Em cảm ơn

rogp10 viết 16:52 ngày 01/10/2018

Bản thân pMem là con trỏ void*.

(void**): ép qua void** chuẩn bị cho lệnh gán
*: deref thành void* cho khớp kiểu -> truy cập vùng nhớ pMem
= pMem: gán vùng nhớ trỏ bởi pMem bằng chính pMem, hay vùng nhớ mang địa chỉ của chính nó. (lưu ý : câu p = *p không có tính chất này :D)

Câu lệnh này có vấn đề ở chỗ deref.

Bài liên quan
0