[问题] double pointer for malloc

楼主: yisin (*@@*)   2018-04-09 15:32:39
开发平台(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):
作者: bluesoul (忙死你老爸)   2018-04-09 15:41:00
P1和Pobstatus 是不一样的,当然位置也不同
楼主: yisin (*@@*)   2018-04-09 15:47:00
请问blue高手,我只是觉得P1指向Pobstatus,如何印出P1所指向Pobstatus的位置和Pobstatus本身的位置。
作者: asilzheng (asil)   2018-04-09 15:50:00
你在test要印出的是*P1及Pobstatus这两个,才是会被main收到的指标
作者: b0920075 (Void)   2018-04-09 21:47:00
P1存的地址指向的值才跟Pobstatus存的值相等吧,P1存的是Probstatus的地址

Links booklink

Contact Us: admin [ a t ] ucptt.com