【エラー・コレクション】memcpyメモリ競合エラー
935 ワード
考えないでください.メモリアクセスが限界を越えたに違いありません.
エラーコード:
tempptrはループの中で絶えず増加して、最後にmemcpyの時このポインタはnewのあのメモリの末尾を指して、これをmemcpyの起点としてきっと境界を越えて修正します:
エラーコード:
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);