const指针类型的释放疑惑
- C/C++ code
const int *p = new int(1024); cout << p << setw(10) << *p << endl;delete p; //报错...没有重载类型p = NULL;////////////////////////////////////////////////int* const po = new int(1024);cout << po << setw(10) << *po << endl;delete po;po = NULL; //报错,不能给const对象赋值
请问动态分配的const对象怎么释放????我晕了!
[解决办法]
第一个
int * temp = p;
delete temp;
temp = NULL;
p = NULL;
[解决办法]
常量是可以初始化的,但它是不可以被修改
不用指针,简单的
const int x=10; //初始化,是可以的
x=100; // 不能修改
所以,不要修改常量的值,像你的,用变量好了
当然,不同编译器对这些细节上处理会不同(所有编译器不会完全按标准来做)
[解决办法]
第二个好理解吧,p已被声明为不可更改的,所以下面的赋值会报错;
对于第一个,我用g++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5编译没有问题。
猜测下,在VC6.0下会报错,然后看错误信息应该就是说:对于重载的两个delete方法,
都没有使用const int *作为参数的,就是说过不了delete的参数类型检查这一关,而
VC6后面的可以,应该是对释放const修饰的指针的内存有支持了吧。