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
'*(void**)pMem = pMem' có nghĩa là gì?
1 Like
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.
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?