C6011
تحذير C6011: dereferencing مؤشر NULL <اسم>
Th هو التحذير يشير إلى أن المؤشر الفارغ هو تم dereferenced. إذا كانت القيمة المؤشر هو صحيحة، تكون النتيجة هو غير معرّف.
مثال
تنشئ التعليمة البرمجية التالية th هو تحذير لأنه قد استدعاء malloc إرجاع قيمة خالية في حالة وجود هو لا توجد ذاكرة متوفرة كافية:
#include <malloc.h>
void f( )
{
char *p = ( char * ) malloc( 10 );
*p = '\0';
// code ...
free( p );
}
لتصحيح هذا التحذير، اختبر المؤشر لقيمة فارغة كما هو موضح فيما يلي تعليمات برمجية:
#include <malloc.h>
void f( )
{
char *p = ( char * )malloc ( 10 );
if ( p )
{
*p = '\0';
// code ...
free( p );
}
}
يجب يخصص الذاكرة داخل دالة المعلمات التي تم annotated بواسطة باستخدام خاصية خالية (Null) في حالة ما قبل قبل dereferencing معلمة. التعليمة البرمجية التالية ينشئ التحذير C6011 لأن محاولة هو التي تم إجراؤها على عدم مرجعية المؤشر الفارغ ( pc) داخل دالة بدون ذاكرة تخصيص الأولى:
#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f([Pre(Null=Yes)] char* pc)
{
*pc='\0'; // warning C6011 - pc is null
// code ...
}