VirtualAlloc开辟内存,用memcpy_s内存拷贝数据,总是LPVOID“未知大小”应用场景:
用VirtualAlloc开辟内存,用memcpy_s从另外的数据源向开辟好的内存拷贝数据,
编译时总是报错:error C2036: “LPVOID”: 未知的大小具体程序如下:
1,*.h中定义了开辟内存的句柄,以及需要开辟的内存数量:
LPVOID pY;
LARGE_INTEGER liYFileSizeDst ; // 由于比较大,采用了“大整数”2,*.cpp中计算需要开辟的内存大小
liYFileSizeDst.QuadPart = chROUNDUP(liTemp.QuadPart, BUFFSIZE);3,*.cpp中用VirtualAlloc开辟内存。
pY = VirtualAlloc(NULL, liYFileSizeDst.QuadPart, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);4,*.cpp中用memcpy_s从另外的数据源向开辟好的内存拷贝数据。
memcpy_s(pY + pCopyStartofYPbPr , 1, pCopyStartofBMP + CPubVarFunc::m_lpImage, 1);
其中pCopyStartofYPbPr是unsigned int,是指针偏移量。CPubVarFunc::m_lpImage是数据源。
一次拷贝一个字节。编译时总是报错:error C2036: “LPVOID”: 未知的大小
可是我在VirtualAlloc开辟内存时,指定了大小liYFileSizeDst.QuadPart。急,在线等。
用VirtualAlloc开辟内存,用memcpy_s从另外的数据源向开辟好的内存拷贝数据,
编译时总是报错:error C2036: “LPVOID”: 未知的大小具体程序如下:
1,*.h中定义了开辟内存的句柄,以及需要开辟的内存数量:
LPVOID pY;
LARGE_INTEGER liYFileSizeDst ; // 由于比较大,采用了“大整数”2,*.cpp中计算需要开辟的内存大小
liYFileSizeDst.QuadPart = chROUNDUP(liTemp.QuadPart, BUFFSIZE);3,*.cpp中用VirtualAlloc开辟内存。
pY = VirtualAlloc(NULL, liYFileSizeDst.QuadPart, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);4,*.cpp中用memcpy_s从另外的数据源向开辟好的内存拷贝数据。
memcpy_s(pY + pCopyStartofYPbPr , 1, pCopyStartofBMP + CPubVarFunc::m_lpImage, 1);
其中pCopyStartofYPbPr是unsigned int,是指针偏移量。CPubVarFunc::m_lpImage是数据源。
一次拷贝一个字节。编译时总是报错:error C2036: “LPVOID”: 未知的大小
可是我在VirtualAlloc开辟内存时,指定了大小liYFileSizeDst.QuadPart。急,在线等。
强制转换成byte*即可
byte* p = (byte*)&pY;