const_castの使い方なのですがなぜconst int z = 0をソースファイルの一番外側に書くとアクセスエラーにりint main()の中(//コメント部)に書くとエラーが起きないのでしょうか?
const int z = 0をソースファイルの一番外側に書いた場合をどうすればアクセスエラーを防げるのかを教えてほしいです。

#include <iostream>
#include "conio.h"
#include <iomanip>
#include "math.h"
#include <list>
using namespace std;

const int z = 0;

int main() {

    //const int z = 0;

    int *zz = const_cast<int*>(&z);
    *zz = 5;
    cout << *zz;

    _getch();
    return 0;
}