[問題] 要如何向 physical memory 要 更多的記憶體??

看板C_and_CPP (C/C++)作者 (天行者)時間14年前 (2011/08/03 21:10), 編輯推噓7(7042)
留言49則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) windows 7 64-bit, VS C++ 2008 如題 目前遇到的窘境 就是記憶體已經被我malloc到不夠了(回傳NULL) 測試了一下 由工作管理員顯示,program 大概使用到了 2G 就不行了 google了一下 記憶體有分為 physical mem. 和 virtual mem. 我的環境下 virtual mem. 似乎有4G可以用 但2G要分給OS,所以剩2G可以用,的確如此~~ 而physical mem. 即為實際上Ram的記憶體大小 我的電腦上有12GB的Ram 有這麼多Ram不用真的太浪費了... 有沒有人知道在windows 7之下 如何能夠調用更多的physical mem.來使用....? 謝謝~ ~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.70.52.10

08/03 21:26, , 1F
這應該是實作malloc的問題...
08/03 21:26, 1F

08/03 21:30, , 2F
還有就是理論上malloc最多能管理的...
08/03 21:30, 2F

08/03 22:10, , 3F
MSDN查 VirtualAlloc ...
08/03 22:10, 3F

08/03 22:52, , 4F
win7 64bit最大虛擬記憶體是16TB吧
08/03 22:52, 4F

08/03 22:52, , 5F

08/03 22:52, , 6F
你是在64bit電腦上寫32bit程式?
08/03 22:52, 6F

08/03 23:03, , 7F
呃...我不知道耶...就VS C++ 2008打開就開始寫啦..
08/03 23:03, 7F

08/03 23:06, , 8F
你vs c++ 2008 程式的標題有x86嗎?
08/03 23:06, 8F

08/03 23:09, , 9F
沒有,可是我安裝在一個叫做program files(x86)資料
08/03 23:09, 9F

08/03 23:09, , 10F
夾裡
08/03 23:09, 10F

08/03 23:10, , 11F
你安裝到32bit的vs c++ 2008,所以寫出來的程式是32bit
08/03 23:10, 11F

08/03 23:11, , 12F
32bit程式跑在64bit仍然受到user space最多只有2g
08/03 23:11, 12F

08/03 23:12, , 13F
的限制
08/03 23:12, 13F

08/03 23:13, , 14F
可是我這個程式是有結合CUDA技術,CUDA 64bit版本一
08/03 23:13, 14F

08/03 23:13, , 15F
直安裝有問題,只好退而求其次用32 bit,我想這樣VS
08/03 23:13, 15F

08/03 23:14, , 16F
是不是也一樣要用32 bit才行@@?
08/03 23:14, 16F

08/03 23:15, , 17F
你的 vs是32的阿,所以程式能用的記憶體才2gb
08/03 23:15, 17F

08/03 23:16, , 18F
你該不會之前是在32bit的vs安裝64bit 的CUDA?
08/03 23:16, 18F

08/03 23:18, , 19F
就是現在這個VS 然後安裝64 bit CUDA...-.-"
08/03 23:18, 19F

08/03 23:24, , 20F
http://ppt.cc/AdLu 你看一下這篇吧,想辦法編譯成64bit
08/03 23:24, 20F

08/03 23:24, , 21F
我對CUDA不熟
08/03 23:24, 21F

08/03 23:28, , 23F
l-studio-2008-安裝-for-win7-32bit64bit/ 縮網址失敗
08/03 23:28, 23F

08/03 23:32, , 24F
恩恩~~我想這個安裝是個大工程..我來試試看!!
08/03 23:32, 24F

08/03 23:33, , 25F
感謝ya大~~
08/03 23:33, 25F

08/03 23:39, , 26F
並不是因為裝的VC是32/64bit版的所以寫出來的程式就是
08/03 23:39, 26F

08/03 23:40, , 27F
32/64bit, 而是取決於你build的時候target machine是選
08/03 23:40, 27F

08/03 23:41, , 28F
x86還是x64, 32bitVC還是可以寫64bit程式的(反之亦然),
08/03 23:41, 28F

08/03 23:41, , 29F
I know.要看用啥編譯器,他編出來的程式就32bit的,所以
08/03 23:41, 29F

08/03 23:41, , 30F
只是build的時候可能需要cross platform compiling....
08/03 23:41, 30F

08/03 23:43, , 31F
32bit的編譯器
08/03 23:43, 31F

08/03 23:49, , 32F
我一開始說的話有問題就是了XD
08/03 23:49, 32F

08/03 23:50, , 33F
我不知道vs2008 可以選擇安裝x86-64的編譯器,所以我假定
08/03 23:50, 33F

08/03 23:51, , 34F
沒有
08/03 23:51, 34F

08/03 23:55, , 35F
小弟我不記得當初裝怎麼選的了, 不過手邊的VC2005, 在
08/03 23:55, 35F

08/03 23:56, , 36F
程式集->VS2005->VSTools裡就有x64 CrossToolsCmd了:)
08/03 23:56, 36F

08/03 23:58, , 37F
另外Build->Config Manager裡, New config裡也找得到x64
08/03 23:58, 37F

08/03 23:59, , 38F
(我自己是32bit XP) 可以直接build出x64的App沒問題:)
08/03 23:59, 38F

08/04 00:00, , 39F
只是小弟我有個疑問, 原po真的需要同時malloc出這麼多的
08/04 00:00, 39F

08/04 00:00, , 40F
memory嗎? 就小弟所知, 目前一般玩家級的NV家顯卡, 好像
08/04 00:00, 40F

08/04 00:01, , 41F
也沒有>2G VRam的吧? (專門用於平行運算加速的卡不知XD)
08/04 00:01, 41F

08/04 00:07, , 42F
似乎是安裝的時候就要勾選要不要64bit了...不過也來
08/04 00:07, 42F

08/04 00:07, , 43F
不及了,我已經反安裝完了... 我的顯卡是GTX 580,
08/04 00:07, 43F

08/04 00:08, , 44F
顯卡記憶體有1.5G,我目前大概已經用到1.3G了吧...
08/04 00:08, 44F

08/04 00:09, , 45F
那是要拷貝到CUDA裡面的,而在host那邊的記憶體就更
08/04 00:09, 45F

08/04 00:09, , 46F
多了!!
08/04 00:09, 46F

08/04 00:10, , 47F
走一步算一步吧...真的不行就要開始犧牲別的來省記憶
08/04 00:10, 47F

08/04 00:10, , 48F
體了
08/04 00:10, 48F

08/04 01:49, , 49F
po 了一篇回文才發現 VictorTom 兄已經都講完要點了XDrz
08/04 01:49, 49F
文章代碼(AID): #1EEKZCeR (C_and_CPP)
文章代碼(AID): #1EEKZCeR (C_and_CPP)