[問題] double pointer for malloc

看板C_and_CPP作者 (*@@*)時間6年前 (2018/04/09 15:32), 編輯推噓2(205)
留言7則, 4人參與, 6年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 由於功能開發限制,不可改變回傳的function type以及需要在子function進行動態 的malloc再回到主function進行free。 目前使用dmalloc 確認過寫法不會造成memory leak,但是想知道為何透過printf 所印出來的位址 都不一樣呢? 餵入的資料(Input): 預期的正確結果(Expected Output): 在小妹的認知當中,會覺得子function當中的P1以及Pobstatus的位置應該要是一樣 test: P1 is NULL P1 = 0x7ffebfe4a878,Pobstatus= 0x7ffebfe4a878, Pobstatus[0].neighmac[0] = 31 P1 = 0x7ffebfe4a878, test = 123, P1[0].neighmac[0] = 31 release memory 錯誤結果(Wrong Output): 不知道應該怎麼印才能印出P1與Pobstatus是一樣的位置? 主要是要印出 應該要被做free(P1)的那個記憶體位置。 test: P1 is NULL P1 = 0x7ffebfe4a878,Pobstatus= 0x7ffebfe4a858, Pobstatus[0].neighmac[0] = 31 P1 = 0x7ffebfe4a878, test = 123, P1[0].neighmac[0] = 31 release memory 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) https://github.com/yisin/test_c_code/blob/master/struc_return.c 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.156.236 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1523259163.A.141.html

04/09 15:41, 6年前 , 1F
P1和Pobstatus 是不一樣的,當然位置也不同
04/09 15:41, 1F

04/09 15:47, 6年前 , 2F
請問blue高手,我只是覺得P1指向Pobstatus,如何印出P1所指
04/09 15:47, 2F

04/09 15:48, 6年前 , 3F
向Pobstatus的位置和Pobstatus本身的位置。
04/09 15:48, 3F

04/09 15:50, 6年前 , 4F
你在test要印出的是*P1及Pobstatus這兩個,才是會被mai
04/09 15:50, 4F

04/09 15:50, 6年前 , 5F
n收到的指標
04/09 15:50, 5F

04/09 21:47, 6年前 , 6F
P1存的地址指向的值才跟Pobstatus存的值相等吧,P1存的
04/09 21:47, 6F

04/09 21:47, 6年前 , 7F
是Probstatus的地址
04/09 21:47, 7F
文章代碼(AID): #1QonSR51 (C_and_CPP)