2016-03-21 5 views
0

Folgendes Szenario in int:Access-Wert in dem Szenario der Zeiger auf ein Feld von Zeigern, von denen jeder zeigen

int** pToPField = new int* [8]; 

Jetzt habe ich einen Zeiger auf ein Feld von Zeigern. Jeder zeigt auf einen Int, richtig?

Jetzt möchte ich die ersten beiden int Felder wie zuweisen:

*(*(pToPField)) = 1; 
*(*(pToPField + 1)) = 2; 

Oder wie:

*(pToPField[0]) = 1; 
*(pToPfield[1]) = 2; 

Der Fehler ist immer ein Core-Dump. Ist meine Syntax falsch? Ich habe versucht, es aus der ersten Antwort auf diese Frage herauszufinden: How do I use arrays in C++? Ich hatte kein Glück.

Grüße

Antwort

3

Ihre Syntax korrekt ist, aber Sie sind nicht durch die Zeiger im Array Zuweisung an jeden Raum für die ganzen Zahlen hingewiesen wird, so dass Sie zufällige Speicher zugreifen, die Sie haben keinen Zugang zu, was zu einem Segmentierungsfehler führt.

Beispiel:

pToPField[0] = new int; 
pToPField[1] = new int; 
// and so on... 

Betrachten std::vector stattdessen verwenden.

std::vector<int> pToPField(8); 

pToPField[0] = 1; 
pToPField[1] = 2; 
// and so on ... 
Verwandte Themen