سؤال

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

struct Level
{   
        int SoldierCount;
        Soldier **soldier;
        int taskCount;
        int *taskPercentage;
        int *taskBitmapX;
        int *taskBitmapY;
}level;

void createMap()
{
    //Input and Declartion of various variabls goes here

    level.soldier = new Soldier* [level.SoldierCount];

    //Seg Faults Here
        level.Soldier[i] = new Soldier(initX, initY, initDirection, steps);     

}

منشئ فئة الجندي:

Soldier(int, int, int, int);
هل كانت مفيدة؟

المحلول

ومع منشئ Soldier فارغة التعليمات البرمجية الخاصة بك يعمل بشكل جيد (باستثناء الأخطاء المطبعية تصحيحها، مثل level.soldier[] صغيرة)

يرجى الرد على الجسم المنشئ.

نصائح أخرى

لا يمكنني العثور على أي مشاكل متعلقة بـ segfault في التعليمات البرمجية الخاصة بك.

لكنني في حيرة من أمري بشأن سبب عدم تطابق حساسية حالتك:
الطبقة تسمى "جندي"والجندي** يُدعى"جندي".

لكنك تكتب:

level.soldier = new soldier* [level.SoldierCount];

و:

level.Soldier[i] = new Soldier(initX, initY, initDirection, steps);

إذا تم تجميع الكود بالفعل كما كتبته، فقد تكون هذه هي المشكلة.

وi >= level.SoldierCount ربما؟

ما هي قيمة level.SoldierCount؟ ما هي قيمة i

والطريقة الوحيدة التي يمكن أن يحدث segfault هو اذا كنت الوصول إلى ذاكرة غير المخصصة. في الخط الذي سلط الضوء، المكان الوحيد الذي يمكن أن يحدث في مجموعة (أو داخل البناء، والتي لم يتم نشرها رمز). على الأرجح، كنت الوصول إلى مجموعة خارج الحدود.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top