如何判斷程序new出的空間是否是虛擬內存?
當我申請一段內存空間時,怎么能夠知道他分配給我的是真實的內存空間,還是虛擬內存呢? 問題點數(shù):100、回復次數(shù):21Top
1 樓freefalcon(心宇—消失中...)回復于 2004-05-09 12:56:49 得分 5
沒辦法知道吧,而且知道了又有什么用呢?
Top
2 樓f123(風子)回復于 2004-05-09 12:58:10 得分 0
如果知道了,我可以想辦法少用點內存呀。Top
3 樓cngdzhang()回復于 2004-05-09 13:09:04 得分 10
new 好象不行
但是windows的alloc可以知道
如果指定的是moveable,那么分配的內存可以在物理內存也可以在虛擬內存
Top
4 樓runall(龍行天下)回復于 2004-05-09 13:12:23 得分 2
如果你的內存很小,有可能分配到虛擬內存上
如果你的內存很大,就有可能是真實的內存空間Top
5 樓outiejun(努力賺錢,用心得分兒)回復于 2004-05-09 13:13:41 得分 2
內存很大也有可能分配到虛擬內存上。Top
6 樓julyclyde(Java初學(大學不教只好自己學))回復于 2004-05-09 13:22:23 得分 2
知道了又如何呢?無所謂啊Top
7 樓zhouqingyuan(浪帆)回復于 2004-05-09 13:22:32 得分 10
沒有辦法知道,不過你可以關閉使用虛擬內存,這樣分配給你的都是真實的內存空間了。
不過這樣子有什么意思呢?Top
8 樓junnyfeng(風歌)回復于 2004-05-09 13:26:38 得分 1
看它的地址,辨別是否在堆中Top
9 樓f123(風子)回復于 2004-05-09 13:31:54 得分 0
哦,怎么看地址知道?
new的空間都是在堆里面的呀.Top
10 樓f123(風子)回復于 2004-05-09 13:33:34 得分 0
如果我知道一個變量是用的虛擬內存,那我就盡可能少用那個變量,以提高程序速度呀。Top
11 樓freefalcon(心宇—消失中...)回復于 2004-05-09 13:39:50 得分 24
如果我知道一個變量是用的虛擬內存,那我就盡可能少用那個變量,以提高程序速度呀。
——這個不是固定的啊,也許你這一次分配它位于物理內存中,而下一次運行時由于整個內存空間不足操作系統(tǒng)就將它放到虛擬內存中去了
實際上windows隱藏了很多細節(jié),就算你想讓你的程序都用物理內存,但系統(tǒng)里面難道就沒有其它程序了嗎?用不用虛擬內存,完全是操作系統(tǒng)根據(jù)當時的具體情況所作的處理啊Top
12 樓dft2000(皮皮)回復于 2004-05-09 16:51:29 得分 10
沒有意義 你控制不了。虛擬內存的交換由系統(tǒng)管理。不活動的程序被交換出去。活動交換進來?,F(xiàn)在不需要考慮內存的的大小和多少。Top
13 樓classrect(以前的號丟了,郁悶)回復于 2004-05-12 10:21:05 得分 1
暈!那要操作系統(tǒng)干嗎?Top
14 樓sharkhuang(走吧走吧!人總會慢慢長大~)回復于 2004-05-12 11:30:59 得分 5
new出來的本來就是虛擬地址.
虛擬地址到物理地址的對應是系統(tǒng)內存管理的.Top
15 樓iidj(紅葉香山)回復于 2004-05-12 11:37:29 得分 5
不要想那些和問題本身關系不大的事。那樣會影響你的整個思路的。
該由誰去管的就由誰去管吧。我們的自由本就不小了。
如果你能自主控制你的心跳,胃消化食物,肝解毒,腸消化食物,等等等等,
那么你還能做什么?
還能寫C++程序嗎?
順其自然吧。
當沒有特殊要求的時候!
Top
16 樓yuwenzhou(宇文周)回復于 2004-05-12 11:44:16 得分 1
想也是不對的Top
17 樓vcchunhong(願意偽禰)回復于 2004-05-12 11:59:42 得分 1
呵樓主的想法地區(qū)很復雜~
沒必要想那么多拉
~Top
18 樓BluntBlade(信仰迷離·重構之道,在于Redo/Undo之間)回復于 2004-05-12 12:09:37 得分 1
樓主把簡單問題復雜化了……呵呵。Top
19 樓steedhorse(晨星)回復于 2004-05-12 13:00:50 得分 5
一段內存需要用的訪問的時候肯定是在內存中,只有當滿足一定條件(比如好長時間沒被訪問到而且內存又不足以容納所有進程所需的內存空間時),才會被交換到外存中,當下次訪問時還是會調入內存,不存在CPU到虛擬內存的直接訪問。
總之,這個事情是操作系統(tǒng)的任務,樓主概念沒有搞清楚。
任何一段內存里的內容都又可能被交換到虛擬內存中,你怎么決定多訪問這一塊,少訪問那一塊?
而且數(shù)據(jù)的訪問是由你的程序邏輯決定的,而不是由內存使用決定的。怎么可能根據(jù)內存使用來決定訪問哪些數(shù)據(jù)呢?如果想樓主說的那樣,當我們編輯一個Word文檔的時候,Word發(fā)現(xiàn)有幾個字目前在虛擬內存中,那么Word就可以不顯示這幾個字了嗎?Top
20 樓TREEDIAO()回復于 2004-05-12 13:42:46 得分 5
無意義的。這是操作系統(tǒng)的事。樓主你是管不了的。Top
21 樓zxs790501(滄海一粟)回復于 2004-05-12 13:45:48 得分 10
虛擬內存是由操作系統(tǒng)動態(tài)調整的吧
程序員怎么能控制呢?
OS(操作系統(tǒng))負責內存與外存的通訊,你不必管(你管不了的)Top
posted on 2008-10-20 13:23 肥仔 閱讀(807) 評論(0) 編輯 收藏 引用 所屬分類: Windows開發(fā)