C++共享内存传输数据有关问题求大神指教
C++共享内存传输数据问题求大神指教
愚生在利用C++共享内存传数据的时候遇到这样的问题~部分代码如下
我想把pBuf的数据(视频实时回调数据)写进共享内存,然后子进程读取pBuf的数据,利用pBuf的数据进行分析~
父进程运行时报这样的错
debug assertion failed!
Expression:sizeInBytes >=count
File:f\dd\vctools\crt_bld\self_x86\crt\src\memcpy_s.c
Line:62~
请问是哪里出了问题呢,内存分配大小吗~该怎么解决呢~
另外子进程是不是就可以直接用pBuf的数据?
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx
------解决方案--------------------
检查你程序中的所有memcpy_s调用, 第二个参数的值不能比第4个参数小
愚生在利用C++共享内存传数据的时候遇到这样的问题~部分代码如下
#define MAP_PREFIX L"Local\\"
#define MAP_NAME L"CallBackMap"
#define FULL_MAP_NAME MAP_PREFIX MAP_NAME
#define MAP_SIZE 65536
#define VIEW_OFFSET 0
#define VIEW_SIZE 0
void CALLBACK DecCBFun(long nPort, char * pBuf, long nSize, HK::FRAME_INFO * pFrameInfo, long nReserved1, long nReserved2)
{
printf("call g_DecCBFun suceess.\n");
printf("nPort=%d,nSize=%d,pFrameInfo.nWidth=%ld,pFrameInfo.nHeight=%ld,pFrameInfo.nStamp=%ld,pFrameInfo.nType=%ld,pFrameInfo.nFrameRate=%ld.\n",
nPort,nSize,pFrameInfo->nWidth,pFrameInfo->nHeight,
pFrameInfo->nStamp,pFrameInfo->nType,pFrameInfo->nFrameRate);
HANDLE hMapFile = NULL;
PVOID pView = NULL;
hMapFile = CreateFileMappingW(
INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
MAP_SIZE,
FULL_MAP_NAME
);
if (hMapFile == NULL)
{
AfxMessageBox(_T("CreateFileMapping failed \n", ));
goto Cleanup;
}
AfxMessageBox(_T("The file mapping is created\n"));
pView = MapViewOfFile(
hMapFile,
FILE_MAP_ALL_ACCESS,
0,
VIEW_OFFSET,
VIEW_SIZE
);
if (pView == NULL)
{
AfxMessageBox(_T("MapViewOfFile failed\n"));
goto Cleanup;
}
AfxMessageBox(_T("The file view is mapped\n"));
char* pszMessage = pBuf;
memcpy_s(pView, VIEW_SIZE, pszMessage,nSize);
AfxMessageBox(_T("This pBuf is written to the view\n"));
SYSTEMTIME s_t;
STARTUPINFOA s_i;
PROCESS_INFORMATION p_i;
ZeroMemory(&s_i,sizeof(s_i));
s_i.cb = sizeof(s_i);
ZeroMemory(&p_i,sizeof(p_i));
if(!CreateProcessA(NULL,"D:\\MyBackup\\我的文档\\Visual Studio 2010\\Projects\\SHOW\\Debug\\SHOW.exe",
NULL,NULL,FALSE,NULL,NULL,NULL,&s_i,&p_i)){
AfxMessageBox(_T(" Err"));
}
DWORD pid;
pid=p_i.dwProcessId;
我想把pBuf的数据(视频实时回调数据)写进共享内存,然后子进程读取pBuf的数据,利用pBuf的数据进行分析~
父进程运行时报这样的错
debug assertion failed!
Expression:sizeInBytes >=count
File:f\dd\vctools\crt_bld\self_x86\crt\src\memcpy_s.c
Line:62~
请问是哪里出了问题呢,内存分配大小吗~该怎么解决呢~
另外子进程是不是就可以直接用pBuf的数据?
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx
------解决方案--------------------
检查你程序中的所有memcpy_s调用, 第二个参数的值不能比第4个参数小