2016-06-17 16 views
0

g ++ Compiler sagt:Segmentierungsfehler (Core Dumped), wenn ich versuche, ein const char * [i], was ist das Problem?

Segmentation fault (core dumped)

wenn dieser Code ausgeführt wird:

#include <iostream> 
using namespace std; 

int main(){ 

const char *constantChars[3], *variableChars[3]; 
long int numbers[3]; 

for(int i=0; i<4; i++){ 
    constantChars[i] = "hello number: "; 
    numbers[i] = i; 
    variableChars[i] = (const char *) numbers[i]; 

    cout<<constantChars[i]<<variableChars[i]<<endl; 
} 

return 0;} 

es abstürzen, wenn cout<<variableChars[i]<<endl in meiner for-Schleife.

+2

Die Frage ist hier: 'for (int i = 0; i <4; i ++)' Ihr Index geht Grenzen aus. –

Antwort

0

Wechsel:

variableChars[i] = (const char *) numbers[i]; 

zu:

variableChars[i] = (const char *)(&numbers[i]); 
+0

Und wie πάντα ῥεῖ sagte, hast du einen zu großen Bereich für "for" -Schleife – MaciekGrynda

0

Das Problem ist mit der Länge der Arrays, die Sie deklariert haben. Sie haben die Länge auf 3 gesetzt, also sollte sie für den Index von 0 bis 2 verwendet werden, während Sie in Ihrem Programm den Index von 0 bis 3 verwenden.

Einfach die Länge aller Arrays auf 4 erhöhen, es wird gelöst Ihr Problem.

Wechsel:

const char *constantChars[3], *variableChars[3]; 
long int numbers[3]; 

zu:

const char *constantChars[4], *variableChars[4]; 
long int numbers[4];