2013-01-12 55 views
1

我想知道,獲得給定內存地址的頭指針的最佳方式是什麼?例如,如果在地址0處分配了p,則大小爲32 bytes如何從地址12返回0?換句話說,從地址進一步回到數據結構中的「主地址」。那可能嗎?如何獲得指針的頭部?

歡迎任何幫助,謝謝!

回答

3

對於結構體,這可以通過使用container_of宏來實現,前提是您知道它的類型,並且您有一個指向其成員的指針(例如,如果給出指向成員的指針,則獲取結構體的指針)。對於使用malloc完成的內存分配,這是不可能的,除非你有你已經穿過的長度或抵消你當前的長度。

+0

container_of做的伎倆,謝謝! –

+0

注意'container_of'不是一個標準的C++宏 –

+0

@ Cheersandhth.-Alf它是一個C宏,因此它只能與結構一起工作。 –