全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1780
推到 Plurk!
推到 Facebook!

虛擬記憶體函式指令VirtualAlloc and memcpy

答題得分者是:hichcock
FCI
一般會員


發表:5
回覆:11
積分:3
註冊:2005-10-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-03-22 14:56:31 IP:211.75.xxx.xxx 訂閱

請問如何將 hTempBuf1 的前半部及 hTempBuf2 的後半部 copy 到 hUserBuf 中,要連續n次.....

[code cpp]
DWORD hUserBufSize = 1024*1024*n;
DWORD hTempBufSize = 1024*1024;

LPVOID hUserBuf = VirtualAlloc( NULL, // region to reserve or commit
hUserBufSize, // size of region
MEM_COMMIT, // type of allocation
PAGE_READWRITE ); // type of access protection

LPVOID hTempBuf1 = VirtualAlloc( NULL, hTempBufSize, MEM_COMMIT, PAGE_READWRITE );
LPVOID hTempBuf2 = VirtualAlloc( NULL, hTempBufSize, MEM_COMMIT, PAGE_READWRITE );
[/code]

用memcpy嗎?

[code cpp]
memcpy(hUserBuf,hUserBuf1,hTempBufSize/2); //<------ ok

memcpy(&hUserBuf[hTempBufSize/2],&hUserBuf1,hTempBufSize/2); //<------ error

memcpy(&hUserBuf[hTempBufSize/2],&hUserBuf2[hTempBufSize/2],hTempBufSize/2); //<------error
[/code]

請網友幫忙解解....
附加檔案:4ba7149f9de96__
編輯記錄
FCI 重新編輯於 2010-03-22 20:32:00, 註解 無‧
FCI 重新編輯於 2010-03-24 12:06:53, 註解 更新上傳檔案內有ok的code‧
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-03-24 10:04:44 IP:59.125.xxx.xxx 訂閱
  1. memcpy(hUserBuf,hUserBuf1,hTempBufSize/2); //<------ ok
既然 OK 何不使用?
另外 下載的檔案是 0 kb ,所以無法測試


===================引 用 FCI 文 章===================

請問如何將 hTempBuf1 的前半部及 hTempBuf2 的後半部 copy 到 hUserBuf 中,要連續n次.....

[code cpp]
DWORD hUserBufSize = 1024*1024*n;
DWORD hTempBufSize = 1024*1024;

LPVOID hUserBuf = VirtualAlloc( NULL, // region to reserve or commit
hUserBufSize, // size of region
MEM_COMMIT, // type of allocation
PAGE_READWRITE ); // type of access protection

LPVOID hTempBuf1 = VirtualAlloc( NULL, hTempBufSize, MEM_COMMIT, PAGE_READWRITE );
LPVOID hTempBuf2 = VirtualAlloc( NULL, hTempBufSize, MEM_COMMIT, PAGE_READWRITE );
[/code]

用memcpy嗎?

[code cpp]
memcpy(hUserBuf,hUserBuf1,hTempBufSize/2); //<------ ok

memcpy(&hUserBuf[hTempBufSize/2],&hUserBuf1,hTempBufSize/2); //<------ error

memcpy(&hUserBuf[hTempBufSize/2],&hUserBuf2[hTempBufSize/2],hTempBufSize/2); //<------error
[/code]

請網友幫忙解解....
hichcock
一般會員


發表:2
回覆:11
積分:17
註冊:2009-09-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-03-24 10:10:54 IP:60.248.xxx.xxx 未訂閱
錯誤的原因應該是因為你用的是 LPVOID

改成 BYTE * 試試看
FCI
一般會員


發表:5
回覆:11
積分:3
註冊:2005-10-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-03-24 11:51:00 IP:211.75.xxx.xxx 訂閱

===================引 用 syntax 文 章===================
  1. memcpy(hUserBuf,hTempBuf1,hTempBufSize/2);???//<------?ok
既然 OK 何不使用?
另外 下載的檔案是 0 kb ,所以無法測試


======================================

因為要 hTempBuf1 的前半hTempBuf2 的後半部 ,連續n次.....
不是COPY 完整的 BUF

FCI
一般會員


發表:5
回覆:11
積分:3
註冊:2005-10-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-03-24 11:54:29 IP:211.75.xxx.xxx 訂閱
剛剛小TRY了一下,可能可以(因硬體問題..), 感謝回應.....

===================引 用 hichcock 文 章===================
錯誤的原因應該是因為你用的是 LPVOID

改成 BYTE * 試試看
系統時間:2017-12-12 12:13:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!