动态分配对象的问题!

来源:百度知道 编辑:UC知道 时间:2024/06/05 04:21:56
const int *pi=new const int(212);
为什么编译出错?

cannot allocate 'const'/'volatile' objects (type is 'const int')
int a=1;
const int b=a;哪里错了??const对象一上来使用对象a的值来初始化,没有错啊!书上也是这样写的!
const int *pi=new const int(212); 用g++可以编译通过,VC++2005同样通过,可能是编译器的不同造成的!

改:
const int *pi= new int(212);

new 后面不能加 const

只能给变量分配动态内存空间即堆内存空间,而常量需要被存储在全局数据区,不能放在堆区。所以是错误的.
内存划分 代码区
全局数据区
堆区
栈区
把等号前后的const都去了就对了
定义常量不能动态分配内存空间
如下这样也是错的
int a=1;
const int b=a;

前后不一致!