共用方式為


C6280

警告 C6280: <variable> 是以 <function> 配置,但以 <function> 刪除

這則警告表示呼叫函式不一致地使用某個記憶體配置系列的函式配置了記憶體,但卻使用另一個記憶體配置系列的函式釋出記憶體。

例如,如果是使用 malloc 配置記憶體,但卻使用 GlobalFree 或 delete 釋出,則會產生這則警告。 請注意,在陣列 new[] 與純量 delete (反之亦然) 間不相符的特定情況下,會改為報告更精確的警告。

範例

下列範例程式碼會產生這則警告:

#include <stdlib.h>
void f(int arraySize)
{
  int *pInt;
  
  pInt = (int *)calloc(arraySize, sizeof (int));
  // code ...
  delete pInt;
}

若要更正這則警告,請使用下列範例程式碼:

#include <stdlib.h>
void f(int arraySize)
{
  int *pInt;
  
  pInt = (int *)calloc(arraySize, sizeof (int));
  // code ...
  free(pInt);
}

不同 API 定義可以使用不同的堆積 (Heap)。 例如,GlobalAlloc 會使用系統堆積,且可自由使用 C 堆積。 這項缺失可能會造成記憶體損毀。

請參閱

參考

calloc

malloc

free

operator new (<new>)

delete Operator (C++)