作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題[問題] 為什麼記憶體位址會一樣??
時間Thu Jun 4 14:55:00 2009
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
1F:推 legnaleurc:第一個問題,你用指標去指同一個 string literal 06/04 15:04
2F:→ legnaleurc:當然同一process位址都一樣 06/04 15:04
3F:→ legnaleurc:第二個問題...不要假設C++ ADT可以用低階方式輸出 06/04 15:05
4F:→ legnaleurc:參考 boost::serialization 06/04 15:05
5F:→ adrianshum:我只想說一句... 這是什麼鬼命名 =_= 06/04 16:09
6F:→ adrianshum:另外, 不同process 的 address space 是分開的 06/04 16:10
7F:→ QQ29:這只是測試啦@@ 不過1F講的好高階 我好難體會..... 06/04 16:11
8F:→ adrianshum:process A 和 B 的 "同一位置", OS 其實是將其指向另一 06/04 16:11
9F:→ adrianshum:真正的位置 06/04 16:11
10F:推 littleshan:這位大大也是本板常客了...建議修一下組合語言 06/04 16:27
11F:→ littleshan:這樣你會比較清楚 compiler 到底再搞什麼鬼 06/04 16:28
12F:推 littleshan:然後最後一個問題...修一下 OS 也可以得到答案 06/04 16:32
13F:→ MOONRAKER:誰用體會學語言啊 學語言就學就好 牽拖啥體會(挖鼻孔) 06/04 16:39
14F:推 VictorTom:的確這個問題應該要去修OS/ASM比較清楚, 不同的process 06/04 18:01
15F:→ VictorTom:有各自的virtual address space, 一般&回來的應該都是 06/04 18:02
16F:→ VictorTom:virtual address, address相同未必會對應同樣的physical 06/04 18:02
17F:→ VictorTom:address; 話說這些東西小弟我大學時完全沒有把它們搞懂, 06/04 18:03
18F:→ VictorTom:工作以後東撞一點西碰一點, 才慢慢補起來這些觀念的Orz 06/04 18:03
19F:→ VictorTom:不過, 說兩個process不能共用memory嘛, 好像也不全對? 06/04 18:05
20F:→ MOONRAKER:史密斯探員乃突破保護模式的大師也 06/04 21:53
21F:推 Eric30:process間的溝通真的就要去翻一下恐龍本了 :) 06/04 22:40