c++ 常量性去除时出错

C++语言 码拜 5年前 (2016-06-07) 340次浏览
#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 时发生访问冲突
解决方案

80

const全局变量存储在只读数据段,编译期最初将其保存在符号表中,第一次使用时为其分配内存,在程序结束时释放。
所以你*m=40试图写入会出错。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++ 常量性去除时出错
喜欢 (0)
[1034331897@qq.com]
分享 (0)