2016-07-10 6 views
-4

работает этот кусок кода причины кучи поврежденКуча была повреждена Exception C++

#include <iostream> 
using namespace std; 

class X 
{ 
public: 
    char* charArr; 
    int *intArr1; 
    int *intArr2; 
    int *intArr3; 
    X() 
    { 
     charArr = new char[] { 5, 5, 5, 5 }; 
     intArr1 = new int[] { -10, -10, -10 }; 
     intArr2 = new int[] { -20, -20, -20}; 
     intArr3 = new int[] { -30, -30, -30}; 
    } 
    ~X() 
    { 
    delete[] charArr; 
    delete[] intArr1; 
    delete[] intArr2; 
    delete[] intArr3; 
    } 
}; 

int main() 
{ 
    X x; 
    return 0; 
} 

Что я делаю неправильно? Я использую визуальную студию, и это ошибка. Msg: exception

+0

* Я использую визуальную студию * - Вы? [Эта ссылка] (http://rextester.com/FXYR13331) говорит по-разному. – PaulMcKenzie

+0

@ πάνταῥεῖ Он не понимает, почему он не работает. Вот почему он пришел сюда. –

+0

@ code0 Когда-либо слышал, что здесь необходимо предоставить [MCVE], задавая такие вопросы? –

ответ

0

Я тоже использую Visual studio. И когда я пытаюсь начать отладку. Есть некоторые ошибки, когда вы пишете:

charArr = new char[] { 5, 5, 5, 5 }; 
intArr1 = new int[] { -10, -10, -10 }; 
intArr2 = new int[] { -20, -20, -20}; 
intArr3 = new int[] { -30, -30, -30}; 

Я думаю, вы должны написать так:

#include <iostream> 
using namespace std; 

class X 
{ 
public: 
    char* charArr; 
    //int *intArr1; 
    //int *intArr2; 
    //int *intArr3; 
    X() 
    { 
     charArr = new char[4]; 
     for(int i = 0; i < 4; i++) 
      charArr[i] = 5; 


     //intArr1 = new int[] { -10, -10, -10 }; 
     //intArr2 = new int[] { -20, -20, -20}; 
     //intArr3 = new int[] { -30, -30, -30}; 
    } 
    ~X() 
    { 
    delete[] charArr; 
    // delete[] intArr1; 
    // delete[] intArr2; 
    // delete[] intArr3; 
    } 
}; 

int main() 
{ 
    X x; 

    return 0; 
} 

Затем он работает хорошо.

Смежные вопросы