سؤال

لقد كنت أستخدم PC-Lint9 لمعرفة أخطاء مختلفة مؤخرًا ، وهي تهب في ذهني حقًا ، ولكن يبدو أن PC-Lint9 لا يمكنه تتبع المؤشر المتدلي ، فإليك لقطة من الكود الذي امتحانه.

int* pkInt = new int;
int* pkDangInt = pkInt;
delete pkInt;
( *pkDangInt ) = 1;

لا يوجد خطأ تم اكتشافه بواسطة PC-Lint. أعتقد أنه قد يكون هناك خطأ ما في التكوين (لم أقمع أي خطأ ووضع مستوى التحذير إلى 3) لأن الإعلان يقول: "اكتشاف المؤشرات المتدلية وغير المتلألئة". أي شخص يعرف كيفية حل هذا؟

هل كانت مفيدة؟

المحلول

ربما يجب قراءة الإعلان على أنه "اكتشاف بعض متدلي ... ". المعضلة القديمة بين الإيجابيات الخاطئة والسلبيات الخاطئة ...

الآن ، أتوقع أنك تعتقد أن أجهزة الكمبيوتر الشخصية ستكتشف أي مؤشر متدلي على الإطلاق ، يجب أن يكتشف مثالك ، وهو أمر بسيط إلى حد ما. ولكن ربما يكون أكثر الهيكلية أدناه أسهل وبالفعل النوع الوحيد الذي تم اكتشافه. هل يمكنك تجربته؟

int* pkDangInt;
{
  int x;
  pkDangInt = &x;
}
( *pkDangInt ) = 1;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top