C6308
تحذير C6308: قد ترجع فارغة 'realloc' مؤشر: تعيين المؤشر الفارغ إلى <متغير>، الذي هو تمرير كوسيطة إلى 'realloc'، سوف يؤدي حظر ذاكرة الأصلية أن يتم leaked
Th هو التحذير يشير إلى ذاكرة حدوث تسرب التي هو نتيجة للاستخدام غير الصحيح لدالة reallocation. القيام بوظائف reallocation كومة ذاكرة مؤقتة لم بتحرير احتياطي التي تم تمريرها إذا reallocation هو غير ناجحة. إلى تصحيح عيب في، قم بتعيين نتيجة دالة reallocation إلى مؤقتة، ثم قم باستبدال المؤشر الأصلي بعد نجاح reallocation.
مثال
نموذج تعليمات برمجية التالي بإنشاء هذا تحذير:
#include <malloc.h>
#include <windows.h>
void f( )
{
char *x;
x = (char *) malloc(10);
if (x != NULL)
{
x = (char *) realloc(x, 512);
// code...
free(x);
}
}
إلى تصحيح هذا التحذير، استخدم تعليمات برمجية التالية:
#include <malloc.h>
#include <windows.h>
void f()
{
char *x, *tmp;
x = (char *) malloc(10);
if (x != NULL)
{
tmp = (char *) realloc(x,512);
if (tmp != NULL)
{
x = tmp;
}
free(x);
}
}
Th هو قد التحذير من توليد noهوe إذا كان هناك هو اسم مستعار مباشرة إلى احتياطي-إلى-أن-reallocated في وقت التعيين نتيجة دالة reallocation.