#include<iostream>
using namespace std;
const int q=10;
void main(void)
{
const int *p = &q;
int *m = const_cast<int*>(p);
*m = 40;//出错
}
如上,在*m=40处出错:
test.exe 中的 0x00191a7e 处有未经处理的异常: 0xC0000005: 写入位置 0x00195830 时发生访问冲突
using namespace std;
const int q=10;
void main(void)
{
const int *p = &q;
int *m = const_cast<int*>(p);
*m = 40;//出错
}
如上,在*m=40处出错:
test.exe 中的 0x00191a7e 处有未经处理的异常: 0xC0000005: 写入位置 0x00195830 时发生访问冲突
解决方案
80
const全局变量存储在只读数据段,编译期最初将其保存在符号表中,第一次使用时为其分配内存,在程序结束时释放。
所以你*m=40试图写入会出错。
所以你*m=40试图写入会出错。