hFileMapping = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0, ALLOCSIZE,MAP_FILE_NAME );
// GetLastError() must be ERROR_ALREADY_EXISTS !!!
if ( hFileMapping == NULL  ) 
{
MessageBox( "shared memory create failed!" );
}
else
{
LPVOID lpMem;
lpMem = MapViewOfFile( hFileMapping,FILE_MAP_ALL_ACCESS,0, 0,ALLOCSIZE );
if ( lpMem == NULL ) 
{
MessageBox( "can not get the shared memory pointer!!" );
CloseHandle( hFileMapping );
}
else
{
sData *pData = (sData*)lpMem;
memset(pData, 0, (2048*96+7)*sizeof(double));
for(i=0;i<96;i++)
(*********************)      memcpy(pData->s_Data+i*2048, m_Data[i]->data, 2048*sizeof(double));   (*******************)
memcpy(pData+96*2048, time, 7*sizeof(double));
VERIFY( UnmapViewOfFile( (LPCVOID)lpMem ) );
}
这是为什么?我该怎么办啊?
大侠们帮帮我把

解决方案 »

  1.   

    应该是你的ALLOCSIZE设置的值太小导致内存越界,你检查一下你的sData类型是什么,ALLOCSIZE又是多少?
      

  2.   

    struct sData
    {
    double s_Data[2000];
    };
    #define ALLOCSIZE  sizeof(2048*96*sizeof(double))
    应该不小了,但是到了
    memcpy(pData->s_Data+i*2048, m_Data[i]->data, 2048*sizeof(double));
    这句系统就报错
      

  3.   

    改成#define ALLOCSIZE  sizeof(2048*96*sizeof(double)*2000)看看
      

  4.   

    还是不行啊
    系统提示:
      Unhandled exception in Das.exe (MSVCRTD.DLL): 0xC0000005 Access Violation
    怎么办啊?
    谢谢了