alloc原理解讀

alloc :分配內存空間,32位的系統佔4個字節,64位系統 佔8個字節

一個NSObject對象佔用多少內存?
1、系統分配了16個字節給NSObject對象(通過malloc_size函數獲得)
2、但NSObject對象內部只使用過了8個字節的空間(64bit環境下,可以通過class_getinstanceSize函數獲得)

iOS 是小端模式 從小到大讀 0x代表16進制,0x00000004這是四個字節byte

內存對齊:結構體的大小必須是最大成員大小的倍數,如果最大成員內存是16,那麼這個結構體的內存大小就必須是16的倍數,用不完的部分就空着

1、計算結構體大小時有一個內存對齊:以結構體中佔字節最大的對象爲標準對齊。
2、操作系統在分配內存時也會有一個內存對齊:
堆空間分配內存都是16的倍數

calloc 分配內存
內存對齊,如果size<16 那麼size=16

發佈了26 篇原創文章 · 獲贊 16 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章