Разное поведение в VS 2008 и VS 2017 для статического - PullRequest
0 голосов
/ 11 июня 2018

Я написал одинаковые строки кода в Visual 2008 и 2017. У меня другой вывод.

int main()
{

 static int  arr[] = {1,2};

 int * ptr = arr;
 int val = ptr[2];

 cout<<val;
 return 0;
}

Вывод в Visual Studio 2017,

39029

Вывод в Visual Studio 2008,

0

Кроме того, при отладке я получаю 0 в обеих Visual Studio.

Почему обе версии Visual Studio ведут себя по-разному в сборке выпуска?

Имеет ли нестабильность в массиве поведение?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

ptr[2] недоступно, и разные компиляторы могут показывать разные неправильные ответы.

Некоторые компиляторы будут показывать 0, а некоторые другие могут показывать большие числа.

0 голосов
/ 11 июня 2018

Неопределенное поведение не определено. Вы получаете доступ к массиву за пределами (только [0] и [1] будут допустимыми индексами), что означает буквально все, что может произойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...