int** z= new int *[5];
for (int j = 0; j < 8; j ++)
{
z[j] = new int[5];
}
for (int n=0; n<8; ++n)
{
for(int m=0;m<5;++m)
{
int x=n%4;
int y=x*wB;
int p=(*(B+(y+m)));
z[n][m]=p;
}
}
return z;
wirft wirft ein Bad_Acess_error
bei n=6
, aberZugreifen auf Speicherarray in C++ Fehler
int** z= new int *[5];
for (int j = 0; j < 8; j ++)
{
z[j] = new int[5];
}
for (int n=0; n<8; ++n)
{
for(int m=0;m<5;++m)
{
int x=n%4;
int y=x*5;
int p=(*(B+(y+m)));
z[6][m]=p;
}
return z;
}
wirft kein Fehler auf. Warum? Das ist wirklich seltsam und ich kann nicht verstehen, warum das passiert. Ich gebe einfach mehr Text ein, damit ich diese Frage veröffentlichen kann.
Bearbeiten: ersetzt Variablen mit Zahlen. Die Zahlen sind nur Grenzen des fraglichen Arrays. Ich weiß, dass der zweite Code funktioniert, weil die Ausgabe genau das ist, was ich erwarte.
Was ist Variable 'wB'? –
Was ist der Wert von 'wb'? Es sieht auch so aus, als hättest du deine Bedingungen rückwärts. "wb" sollte die Grenze der äußeren for-Schleife und nicht der inneren Schleife sein. – NathanOliver
Warum 'j <8' und' n <8'? Manchmal benutzt man 'wB' manchmal die magische Zahl' 8'. Sobald Sie jedoch auf ein Array außerhalb seines Definitionsbereichs zugreifen, kann die C++ - Laufzeit alles tun, was den C++ - Standard betrifft, einschließlich der Meldung oder Meldung eines Fehlers. Es ist sehr wahrscheinlich, dass Ihr zweites Programm nur gut aussieht, aber eigentlich nicht. – chi