C6280

تحذير C6280: <متغير> هو المخصصة مع <دالة>، ولكن تم الحذف بواسطة <دالة>

هذا التحذير يشير إلى أن استدعاء الدالة على inconsistently تخصيص الذاكرة مع دالة من عائلة تخصيص ذاكرة واحد و تحرير مع دالة من عائلة أخرى لتخصيص الذاكرة.

على سبيل المثال، رقم هو قد يكون المنتجة تحذير في حالة ذاكرة هو المخصصة مع mallocولكن تحرير مع GlobalFreeأو delete. لاحظ أنه في حالات معينة من عدم التطابق بين صفيفة new[]و مفردة delete(أو vice versa) ، يتم الإبلاغ عن التحذيرات أكثر دقة بدلاً من ذلك.

مثال

نموذج تعليمات برمجية التالي بإنشاء هذا تحذير:

#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);
}

أن ملفات تعريف مختلفة لواجهة برمجة تطبيقات استخدم heaps مختلفة. على سبيل المثال، يستخدم GlobalAlloc كومة ذاكرة مؤقتة للنظام، و الاستخدامات الحرة C كومة ذاكرة مؤقتة. Th هو defect هو المحتمل أن تتسبب فساد ذاكرة والاعطال.

راجع أيضًا:

المرجع

calloc

malloc

تحرير

أعضاء البيانات جديد (< جديدة >)

delete Operator (C++)