次の方法で共有


C6280

警告 C6280: <変数> は <関数> で割り当てられていますが、<関数> で削除されています。

この警告は、あるメモリ割り当てファミリからの関数で割り当てたメモリを別のメモリ割り当てファミリからの関数で解放したため、呼び出し関数の一貫性が損なわれていることを示します。

この警告が生成されるのは、たとえば、メモリが 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 定義が別個のヒープを使用することが可能です。 たとえば、GlobalAlloc がシステム ヒープを使用し、C ヒープを使用して解放します。 この問題は、メモリの破損やクラッシュの原因になります。

参照

参照

calloc

malloc

free

operator new (<new>)

delete Operator (C++)