[問題] pointer 比較

看板C_and_CPP作者時間14年前 (2010/04/19 00:38), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串1/1
大家好,我最近遇到一個怪問題.... 我有兩個 pointer: A *a ; A *b; 因為我希望把這兩個 "address" 用 socket 來傳,所以我就做了這樣的事。 已知 a == b (但他門是 local variables) thread 1 ==== memset(buffer1, '\0', sizeof(buffer1)); memcpy(buffer1, &a, sizeof(A*)); thread 2 ==== memset(buffer2, '\0', sizeof(A*)); memcpy (buffer2, &b, sizeof(A*)); 結果沒想到 strcmp(buffer1, buffer2) 的結果有時候是 0 有時候又不是.... 請問.... 這樣寫是不是不太對阿 我知道 &a != &b 但是既然 a == b 那麼 memcpy(buffer1, &a, sizeof(A*)); 不就要等於 memcpy(buffer2, &b, sizeof(A*)); (我是指 buffer 會相等??) 不然....還有甚麼好方法可以用 socket 傳送 address 呢?? (我想傳送 address 只是想要把它當成某種特定的 identifier...) 我實在不想把他轉成 int 去送... 雖說 "通常" sizeof(int) == sizeof(pointer) 但這也不是永遠成立吧.... 還請大家多多指教了 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 155.97.237.213

04/19 00:42, , 1F
先說你不該用 strcmp 來比較 而該用 memcmp
04/19 00:42, 1F

04/19 00:56, , 2F
strcmp函式遇0x00結束,memcmp則不管,會一直比對到你指定
04/19 00:56, 2F

04/19 00:56, , 3F
的長度才結束.
04/19 00:56, 3F

04/19 04:12, , 4F
你有等thread都跑完才比較嗎?
04/19 04:12, 4F
文章代碼(AID): #1BopLhzH (C_and_CPP)