共用方式為


C6283

警告 C6283: <變數> 是以陣列 new [] 配置,但以純量 delete 刪除

這項警告只會出現在 C++ 程式碼中,表示呼叫函式是以陣列 new [] 運算子配置記憶體,但是以純量 delete 運算子釋放記憶體。這項缺失可能會造成遺漏、記憶體損毀,而在運算子已被覆寫的情況下,則會造成當機。如果是以陣列 new [] 配置記憶體,則通常應該是以陣列 delete[] 釋放記憶體。

範例

下列程式碼將產生出這個警告:

void f( )
{
  char *str = new char[50];
  // code ...
  delete str;
}

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

void f( )
{
  char *str = new char[50];
  // code ...
  delete[] str;
}

警告 C6283 只會套用到基本型別 (Primitive Type) 的陣列,如整數或字元。如果陣列元素為類別型別的物件,則會發出警告 C6278

就記憶體遺漏和例外狀況而言, new 和 delete 的使用上有很多缺點。若要避免這類遺漏和例外狀況的問題,請使用 C++ Standard Template Library (STL) 提供的機制。其中包括 shared_ptrunique_ptrvector。如需詳細資訊,請參閱智慧型指標 (現代 C++)C++ 標準程式庫參考