2009-03-24 18 views
1

Ich bin neu in C++ und Direct X, und ich fragte mich, was ist die ordnungsgemäße Verwendung von DXGetErrorString und DXGetErrorDescription?DXGetErrorString Neuling Frage

Gemäß http://msdn.microsoft.com/en-us/library/bb173057(VS.85).aspx und http://msdn.microsoft.com/en-us/library/bb173056(VS.85).aspx geben diese Funktionen einen Zeiger auf eine Zeichenfolge zurück. In allen Beispielen, die ich im Internet gesehen habe, verwenden sie jedoch direkt den Rückgabewert, ohne ihn danach zu befreien.

Zum Beispiel:

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

Heißt das, es bedeuten, dass ein Speicherverlust, da der Speicher für die Fehlerzeichenfolge zugeordnet und die Fehlerbeschreibung wird nie freigegeben? Wenn nicht, wie wird es veröffentlicht?

Vielen Dank für die Hilfe!

Antwort

3

Höchstwahrscheinlich geben die Funktionen eine statische Zeichenfolge zurück, so dass sie nicht frei sein muss.

würde es ähnlich sein Code wie diesen zu schreiben, wo Sie sich nicht um die Befreiung der Rückgabewert sorgen würde:

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

Guter Punkt. Daran habe ich nicht gedacht, danke! – Kevin