.....
// Some code
char *options[] = {"\nDATA:","\nSUBJECT:","\nMAILFROM:","\nRCPTO:"};
char *data[3] = {};
我正在初始化這個指針數組。爲什麼兩個指針都顯示相同的內存地址
但是,當我嘗試訪問指針的陣列的每個成員,我可以看到, 選項[0] =數據[3] 0x40873b = 0x40873b 它們都指向同一個存儲單元。
即使我在'data'數組之前聲明瞭'options'數組。 那麼如何解決這個問題。 如何確保它們位於不同的內存位置並正確存儲內容。不重疊,不同的數據位於不同的位置。
'data [3]'超出界限。數組只有索引0,1和2. – user694733
即使這個程序沒有包含所提到的未定義的行爲錯誤,仍然可能最終有兩個指針指向相同的位置,因爲這些指針指向_constant字符串文字_無法修改。如果程序中有兩個這樣的文字,它們都是「hello」,然後用一個唯一的指針指向每個文字,那麼這兩個文字仍然可以分配在相同的內存地址,因爲編譯器可以告訴它們是相同並且它們是隻讀的。這是一個稱爲「字符串池」的編譯器優化。 – Lundin