2009-03-24 5 views
1

Я новичок в C++ и Direct X, и мне было интересно, как правильно использовать DXGetErrorString и DXGetErrorDescription?DXGetErrorString newbie question

В соответствии с http://msdn.microsoft.com/en-us/library/bb173057(VS.85).aspx и http://msdn.microsoft.com/en-us/library/bb173056(VS.85).aspx эти функции возвращают указатель на строку. Однако во всех примерах, которые я видел в Интернете, они прямо используют возвращаемое значение, не освобождая его впоследствии.

Например:

char buf[2048]; 
sprintf(buf, "Error: %s error description: %s\n",DXGetErrorString(hr),DXGetErrorDescription(hr)); 

это значит есть утечка памяти, потому что память, выделенная для строки ошибки и описание ошибки никогда не выйдет? Если нет, то как он будет выпущен?

Благодарим за помощь!

ответ

3

Скорее всего, функции возвращают статическую строку, поэтому ее не нужно освобождать.

Было бы похоже на написание кода, как это, где вы бы не беспокоиться об освобождении возвращаемого значения:

PCWSTR GetErrorCode(int error) 
{ 
    switch (error) 
    { 
     case 1: 
      return L"File not found"; 
     ... 
     default: 
      return "Unknown error"; 
    } 
} 
+0

Хороший вопрос. Я не думал об этом, спасибо! – Kevin