【エラー・コレクション】memcpyメモリ競合エラー

935 ワード

考えないでください.メモリアクセスが限界を越えたに違いありません.
エラーコード:
BYTE* tempptr = new BYTE [bmpFileH.bfSize-bmpFileH.bfOffBits];

for(int i=h-1;i>=0;i--)	//   
{				
	for(int j=0;j<w;j++)	//   
	{
		int bits = depth/8;
		for(int k=0;k<bits;k++)	//    
		{
			//*pData++= pRaw[i*w+j*bits+k];		
				
			*tempptr++= pRaw[i*w+j*bits+k];	
			
		}
	}
}

memcpy(pData, tempptr, bmpFileH.bfSize-bmpFileH.bfOffBits);

tempptrはループの中で絶えず増加して、最後にmemcpyの時このポインタはnewのあのメモリの末尾を指して、これをmemcpyの起点としてきっと境界を越えて修正します:
BYTE* tempptr = new BYTE [bmpFileH.bfSize-bmpFileH.bfOffBits];
BYTE* idxtemp = tempptr;
for(int i=h-1;i>=0;i--)	//   
{				
	for(int j=0;j<w;j++)	//   
	{
		int bits = depth/8;
		for(int k=0;k<bits;k++)	//    
		{
			//*pData++= pRaw[i*w+j*bits+k];		
				
			*idxtemp++= pRaw[i*w+j*bits+k];	
			
		}
	}
}

memcpy(pData, tempptr, bmpFileH.bfSize-bmpFileH.bfOffBits);