Почему указатель после очищения памяти меняет место на которое указывает VS

Не понимаю одну вещь: почему после очищения памяти, на которую указывает указатель, указатель начинает указывать на другой адрес в памяти. Причём это происходит только в Visual Studio, в Code Blocks указатель не меняется. Вот код:

int main()
{
    int* ptr = new int;

    cout << ptr << '\n';

    delete ptr;

    cout << ptr << '\n';
    return 0;
}

Вывод в Visual Studio:

011C0550

00008123

Вывод в Code Blocks:

0x1e1750

0x1e1750


Ответы (1 шт):

Автор решения: Rock Hero

Забавно, он кидает на данный адрес и разные типы указателей после удаления. Похоже это сделано или для того что бы можно было любой указатель сверить с данным адресом (00008123) и узнать удалялась ли память указателя ранее, либо при обращении к этой памяти что бы во всех случаях выбилось одно и то же исключение и код ошибки ( у меня -1073741819). Так что зря закидали комментатора выше, это оптимизации VS судя по всему.

→ Ссылка