Читаю код, и вижу:
Код:
if (dataBuf==NULL) {
// AfxMessageBox("JpegFile :\nOut of memory",MB_ICONSTOP);
jpeg_destroy_decompress(&cinfo);
fclose(infile);
return NULL;
}
или так
Код:
tmp = (BYTE*)new BYTE[widthPix*height];
if (tmp==NULL) {
// AfxMessageBox("Memory error");
return FALSE;
}
(Функции занимающиеся преобразованиями между JpegFile и RGB буфером)
Как раньше мне казалось, в случае нехватки памяти надо как можно скорее завершать работу программы, разве это не так? В случае с Java, перехват OutOfMemoryException вроде бы deprecated. А в серверной части следует использовать многопоточность для таких случаев, и память выделять заранее, что бы избежать падения сервера из-за ресурсного превышения, комбинируя подход с установкой пределов для отдельных исполнителей (используя, например, ulimit). Так, основной части сервера всегда останется память, а дочерние обработчики не смогут захватить всех ресурсов. Не могли бы вы пояснить такую особенность проектирования?
И еще примеры:
Код:
BOOL
_CreateCharIF( LPDIRECT3DDEVICE8 pi_pD3DDevice )
{
if( g_ifCharIF != NULL ) return FALSE;
if( pi_pD3DDevice == NULL ) return FALSE;
// *********52880;*********47533;*********53552; *********51064;*********53552;*********54168;*********51060;*********49828; *********44061;*********52404; *********49373;*********49457;
if( ( g_ifCharIF == NULL ) && ( g_dwCharIFRefCnt == 0 ) )
{
g_ifCharIF = new ChInterface;
if( g_ifCharIF == NULL ) return FALSE;
}
// *********52880;*********47533;*********53552; *********51064;*********53552;*********54168;*********51060;*********49828; *********52488;*********44592;*********54868;
g_ifCharIF->InitCharacter( pi_pD3DDevice );
return TRUE;
}
И несколько примеров без проверок(та логика по которой корейцы определяли необходимость проверки мне также не доступна) :
Код:
g_pMeshMgr = new CUnityMeshMgr;
g_pMeshMgr->Create();
Код:
g_pAnimationMgr = new CUnityAniMgr;
g_pAnimationMgr->Create();
Код:
BOOL
_CreateItemDataMgr( void )
{
if( g_pItemDataMgr != NULL ) return FALSE;
g_pItemDataMgr = new CItemDataMgr;
return TRUE;
}
P.S. исходники брал
, явно не полные, загуглились быстро.