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;
Bad_Acess_error
бросает на n=6
, ноДоступ к памяти массива в C++ бросает ошибку
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;
}
не проливает ошибку. Зачем? Это действительно странно, и я не могу понять, почему это происходит. Я просто набираю текст, поэтому я могу опубликовать этот вопрос.
Редактировать: заменить переменные номерами. Числа - это только пределы рассматриваемого массива. Я знаю, что второй код работает, потому что результат - именно то, что я ожидаю.
Что такое переменная 'wB'? –
Какова ценность 'wb'? Это также похоже на то, что у вас есть свои условия назад. 'wb' shoul - предел внешнего цикла, а не внутренний цикл. – NathanOliver
Почему 'j <8' и' n <8'? Иногда вы иногда используете 'wB' волшебное число' 8'. В любом случае, как только вы получите доступ к массиву вне его диапазона определения, среда выполнения C++ может делать что угодно, насколько это предусмотрено стандартом C++, включая как отчетность, так и сообщение об ошибке. Очень вероятно, что ваша вторая программа просто выглядит нормально, но на самом деле это не так. – chi