كود الذاكرة التسريبات، ويبدو أن تكون قادمة من ID3DXBuffer

StackOverflow https://stackoverflow.com/questions/1807338

سؤال

وأنا تحميل تظليل بما يلي:

ID3DXBuffer* errors = 0;
ID3DXEffect* effect = 0;

HR(D3DXCreateEffectFromFile(
    gd3dDevice,  L"Shader.fx", 0, 0,
    D3DXSHADER_DEBUG|D3DXSHADER_SKIPOPTIMIZATION,
    0, &effect, &errors));

for (int i = 0; i < 3; i++)  {
    if(errors) {
        errors->Release();
        if (effect)
            effect->Release();

        errors = 0;
        HR(D3DXCreateEffectFromFile(gd3dDevice, L"Shader.fx", 
            0, 0, D3DXSHADER_DEBUG, 0, effect, &errors));
    }
    else
        break;
}

والتي تحاول تحميل تظليل وإذا كان يحصل على خطأ / تحذير يحاول مرة أخرى 3 مرات أكثر قبل التخلي.

والآن لقد وجدت عندما أغلق D3DX تطبيق يعطيني الرسالة التالية:

وD3DX: الكشف عن تسرب الذاكرة: 2 مخصصات unfreed (486 بايت)

وهذا يحدث فقط عندما تكون هناك أخطاء (أي أنه ينتقل إلى حلقة). أنا حقا لست متأكدا لماذا يحدث هذا، أي أفكار؟

وOK I ثابتة، كان مجرد مسألة منطق، 'خطأ' لم يكن لديك "الافراج" دعا ذلك في الثالث محاولة بالتالي هذه المسألة.

هل كانت مفيدة؟

المحلول 2

وOK I ثابتة، كان مجرد مسألة منطق، 'خطأ' لم يكن لديك "الافراج" دعا ذلك في الثالث محاولة بالتالي هذه المسألة.

نصائح أخرى

ملحوظة: ينبغي الإفراج ID3DXBuffer حتى عندما DX وظيفة (. السابقين D3DXCreateEffectFromFile) لم تفشل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top