Est-ce que MemoryDC occupe de la mémoire ou de la carte vidéo?
Question
J'utilise le code suivant pour créer un contrôleur de domaine compatible:
m_pDC=new CDC();
VERIFY(m_pDC->CreateCompatibleDC(sampleDC);
CBitmap bitmap;
if (bitmap.CreateCompatibleBitmap(sampleDC, rect.Width(), rect.Height()))
{
m_pOldBitmap = m_pDC->SelectObject(&bitmap);
}
Ma question est la suivante: CDC CBitmap occupe-t-il de la mémoire? S'il utilise de la mémoire, pourquoi le résultat est-il mauvais lorsque rect.width et rect.height sont volumineux? (Il y a assez de mémoire). Quelqu'un a dit qu'il utilise la mémoire sur la carte vidéo. Est-ce vrai. Je n'en suis pas très sûr.
La solution
La mémoire dans CreateCompatibleBitmap
est allouée à partir d'un pool système qui est est généralement limité à environ 200 mégaoctets sur les versions 32 bits de Windows.
Depuis WinNT4.0 , l'API CreateBitmap () alloue le bitmap dans la mémoire paginée en mode noyau . Dans WinNT4, il était impossible de créer des bitmaps supérieurs à 48 Mo.
Quelle était votre limite?