Freigeben über


xlFree

Gilt für: Excel 2013 | Office 2013 | Visual Studio

Wird verwendet, um von Microsoft Excel zugeordnete Arbeitsspeicherressourcen freizugeben, wenn der Rückgabewert XLOPER/ XLOPER12 in einem Aufruf von Excel4, Excel4v, Excel12 oder Excel12v erstellt wird. Die xlFree-Funktion gibt den Zusätzlichen Arbeitsspeicher frei und setzt den Zeiger auf NULL zurück, zerstört jedoch keine anderen Teile des XLOPER-XLOPER12/ .

Excel4(xlFree, 0, n, LPXLOPER px_1, ..., LPXLOPER px_n);
Excel12(xlFree, 0, n, LPXLOPER12 px_1, ..., LPXLOPER12 px_n);

Parameter

px_1, ..., px_n

Ein oder mehrere XLOPER-XLOPER12/ s, die freigegeben werden sollen. In Excel-Versionen bis 2003 ist die maximale Anzahl von Zeigern, die übergeben werden können, 30. Ab Excel 2007 wird dies auf 255 erhöht.

Eigenschaftswert/Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Hinweise

Sie müssen jede XLOPER , die Sie als Rückgabewert von Excel4 oder Excel4v erhalten, und alle XLOPER12 , die Sie als Rückgabewert von Excel12 oder Excel12v erhalten, freigeben, wenn es sich um einen der folgenden Typen handelt: xltypeStr, xltypeMulti oder xltypeRef. Es ist immer sicher, andere Typen freizugeben, auch wenn sie keinen zusätzlichen Speicher verwenden, solange Sie sie aus Excel4 oder Excel12 erhalten haben.

Wenn Sie zu Excel einen Zeiger auf eine XLOPER-XLOPER12/ zurückgeben, die noch excel-zugewiesenen Arbeitsspeicher enthält, der freigegeben werden soll, müssen SiexlbitXLFree festlegen, um sicherzustellen, dass Excel den Arbeitsspeicher freigibt.

Beispiel

In diesem Beispiel wird GET aufgerufen. WORKSPACE(1), um die Plattform zurückzugeben, auf der Excel derzeit als Zeichenfolge ausgeführt wird. Der Code kopiert diese zurückgegebene Zeichenfolge zur späteren Verwendung in einen Puffer. Der Code platziert den Puffer zur späteren Verwendung mit der Excel-Funktion wieder im XLOPER12 . Schließlich zeigt der Code die Zeichenfolge in einem Warnungsfeld an.

\SAMPLES\EXAMPLE\EXAMPLE.C

short WINAPI xlFreeExample(void)
{
   XLOPER12 xRes, xInt;
   XCHAR buffer[cchMaxStz];
   int i,len;
   // Create an XLOPER12 for the argument to Getworkspace.
   xInt.xltype = xltypeInt;
   xInt.val.w = 1;
   // Call GetWorkspace.
   Excel12f(xlfGetWorkspace, &xRes, 1, (LPXLOPER12)&xInt);
   
   // Get the length of the returned string
   len = (int)xRes.val.str[0];
   //Take into account 1st char, which contains the length
   //and the null terminator. Truncate if necessary to fit
   //buffer.
   if (len > cchMaxStz - 2)
      len = cchMaxStz - 2;
   // Copy to buffer.
   for(i = 1; i <= len; i++)
      buffer[i] = xRes.val.str[i];
   // Null terminate, Not necessary but a good idea.
   buffer[len] = '\0';
   buffer[0] = len;
   // Free the string returned from Excel.
   Excel12f(xlFree, 0, 1, &xRes);
   // Create a new string XLOPER12 for the alert.
   xRes.xltype = xltypeStr;
   xRes.val.str = buffer;
   // Show the alert.
   Excel12f(xlcAlert, 0, 1, (LPXLOPER12)&xRes);
   return 1;
}

Siehe auch