推 jerryh001: 你程式碼沒貼到 05/25 15:32
※ 編輯: zzss2003 (60.248.26.157), 05/25/2018 16:01:47
※ 編輯: zzss2003 (60.248.26.157), 05/25/2018 16:02:23
※ 編輯: zzss2003 (60.248.26.157), 05/25/2018 16:03:01
推 cphe: 看不太懂你的問題… 然後你的圖只畫出一個其中兩個pointer 05/25 16:12
→ cphe: 但你的code不是長這樣阿~ 當然會跟你認知要allocate不一樣 05/25 16:12
已更新內文,希望可以更明瞭,謝謝
※ 編輯: zzss2003 (60.248.26.157), 05/25/2018 16:39:03
→ elements: B的值是什麼意思? 05/25 16:40
→ elements: 第八行跑完 就要一串陣列有c個int*大小的元素 這個陣列 05/25 16:42
→ elements: 本身的位址會被放進你的變數 05/25 16:42
不好意思,已改內文,第8行只有執行int **arr
※ 編輯: zzss2003 (60.248.26.157), 05/25/2018 16:45:32
※ 編輯: zzss2003 (60.248.26.157), 05/25/2018 16:46:23
→ elements: 那第八行沒有你想的那麼複雜 他就是一個指標大小的數值 05/25 16:48
→ elements: 內容是亂數 型態是 int**,他指到的地方沒有意義,要 05/25 16:48
→ elements: 等到下一行 malloc 才會給他有用的值 05/25 16:48
恩恩,這個我能了解,我的問題是卡在為什麼中間會多3個空間,因為照理說只有1個空間
※ 編輯: zzss2003 (60.248.26.157), 05/25/2018 17:13:31
推 wei115: 第10行和11行 不是給了每一個arr[i] 一個c * sizeof(int) 05/25 17:27
→ wei115: 的記憶體空間了嗎?那為什麼B的大小會是4byte? 05/25 17:28
→ wei115: B的大小應該要是 c*sizeof(int) 阿 05/25 17:28
→ wei115: arr指向了3個(int *)大小的空間,每一個(int *) 指向4個 05/25 17:30
→ wei115: (int)大小的空間 所以3 * 4 = 12個(int)大小的空間 05/25 17:30
→ taies: B是個int* 那sizeof(B)=sizeof(int*)也是很正常的吧 05/26 01:20
→ taies: sizeof(arr)=sizeof(int**)這情況應該也是4Byte 05/26 01:23
→ taies: 不過指標大小看平台而定就是了 05/26 01:23