[問題] 為什麼記憶體位址會一樣&觀念請教

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2009/06/04 14:55), 編輯推噓5(5016)
留言21則, 7人參與, 最新討論串1/1
http://nopaste.info/b02b89cf45.html 請問一下我無意間測試一下發現 q->print(); 和qq->print();印出來竟然一樣!!? 這是什麼原因呢?? 另外想問 我這支程式如果"沒有關掉"的話 我再寫另一個程式 read的話 ex: FILE * pFile; pFile = fopen ( "C:/test.bin" , "rb" ); fseek (pFile , 0 , SEEK_END); int lSize = ftell (pFile)/sizeof(QQ); cout<<"file size:"<<lSize<<endl; rewind (pFile); QQ *ptr; ptr=new QQ[lSize]; fread (ptr,sizeof(QQ),lSize,pFile); 如果印出 ptr->print(); 天真的以為可以印出 "HELLO" (和write程式const char*p指到的位址相同) 不過他是印出 "bin" <====怎會印出副檔名!! 我只有一個粗淺的觀念就是兩個process 不能共用記憶體 那如果這樣 我們用&看到的位址 是什麼涵義? 兩個程式看到的同一個"記憶體位置"為什麼不一樣??? 請各位指教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.207.187

06/04 15:04, , 1F
第一個問題,你用指標去指同一個 string literal
06/04 15:04, 1F

06/04 15:04, , 2F
當然同一process位址都一樣
06/04 15:04, 2F

06/04 15:05, , 3F
第二個問題...不要假設C++ ADT可以用低階方式輸出
06/04 15:05, 3F

06/04 15:05, , 4F
參考 boost::serialization
06/04 15:05, 4F

06/04 16:09, , 5F
我只想說一句... 這是什麼鬼命名 =_=
06/04 16:09, 5F

06/04 16:10, , 6F
另外, 不同process 的 address space 是分開的
06/04 16:10, 6F

06/04 16:11, , 7F
這只是測試啦@@ 不過1F講的好高階 我好難體會.....
06/04 16:11, 7F

06/04 16:11, , 8F
process A 和 B 的 "同一位置", OS 其實是將其指向另一
06/04 16:11, 8F

06/04 16:11, , 9F
真正的位置
06/04 16:11, 9F

06/04 16:27, , 10F
這位大大也是本板常客了...建議修一下組合語言
06/04 16:27, 10F

06/04 16:28, , 11F
這樣你會比較清楚 compiler 到底再搞什麼鬼
06/04 16:28, 11F

06/04 16:32, , 12F
然後最後一個問題...修一下 OS 也可以得到答案
06/04 16:32, 12F

06/04 16:39, , 13F
誰用體會學語言啊 學語言就學就好 牽拖啥體會(挖鼻孔)
06/04 16:39, 13F

06/04 18:01, , 14F
的確這個問題應該要去修OS/ASM比較清楚, 不同的process
06/04 18:01, 14F

06/04 18:02, , 15F
有各自的virtual address space, 一般&回來的應該都是
06/04 18:02, 15F

06/04 18:02, , 16F
virtual address, address相同未必會對應同樣的physical
06/04 18:02, 16F

06/04 18:03, , 17F
address; 話說這些東西小弟我大學時完全沒有把它們搞懂,
06/04 18:03, 17F

06/04 18:03, , 18F
工作以後東撞一點西碰一點, 才慢慢補起來這些觀念的Orz
06/04 18:03, 18F

06/04 18:05, , 19F
不過, 說兩個process不能共用memory嘛, 好像也不全對?
06/04 18:05, 19F

06/04 21:53, , 20F
史密斯探員乃突破保護模式的大師也
06/04 21:53, 20F

06/04 22:40, , 21F
process間的溝通真的就要去翻一下恐龍本了 :)
06/04 22:40, 21F
文章代碼(AID): #1A9s_5bz (C_and_CPP)
文章代碼(AID): #1A9s_5bz (C_and_CPP)