Компиляция в визуальной студии могу выделить> 4 ГБ ОЗУ.Однако я не могу обратиться ко всей памяти, особенно к памяти выше 4 гигабайт
Нет проблем, если выделение меньше 4 гигабайт
Чего мне не хватает?
например //выделить большое изображение
// # определить ширину (биты) (((биты) + 31) / 32 * 4)
Width = 24000;
Height = 50000;
nBitsPerPixel =32
NumberColors =0
...
BITMAPINFOHEADER* lpbmi; // pointer to a Win 3.0-style DIB
size_t Size;
Size = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)* NumberColors +WIDTHBYTES(Width*nBitsPerPixel) * Height;
try{
m_pDIB = (DWORD*)malloc (sizeof(DWORD) * (Size +3)/4); // DWORD aligned
}
…
lpbmi = (BITMAPINFOHEADER*)m_pDIB;
lpbmi->biSize = sizeof(BITMAPINFOHEADER);
lpbmi->biWidth = Width;
lpbmi->biHeight = Height;
lpbmi->biPlanes = 1;
lpbmi->biBitCount = (unsigned short)nBitsPerPixel;
m_pImage = (BYTE*)m_pDIB + *(DWORD*)m_pDIB + sizeof(RGBQUAD)*m_NumberColors;
... хорошо, пока нет ошибок при запуске'' '' ''
однако, когда я обращаюсь к памяти
size_t p = Width *4;
BYTE* pSrc = m_pImage;
// test
for ( DWORD j = 0; j < m_Height; j++)
{
BYTE* pMem;
pMem = pSrc + size_t(j *p);
memset(pMem, 0, m_Width);
}
, когда j равно 5261, выдается ошибка
0xC0000005: Место записи нарушения доступа
'' '' '' '' '' '' '' ''
windows 10, visual studio 2017, 64 бит (x64)