【发布时间】:2011-05-12 06:43:53
【问题描述】:
让我们看一下这行代码:
char * x = new char [2];
x[0] = 'a'; // OK
x[1] = 'b'; // we can modify data using x
const char * y = x;
y[0] = 'c'; // Error
y[1] = 'd'; // we can't modify data using y
delete [] y; //but we can deallocate memory (i.e. delete data) using y
所以在我看来,更自然地限制不能使用指向它的 const 指针释放内存。为什么没有这个限制?
【问题讨论】:
-
在哲学方面,
const说你不能改变指向的对象。你没有,你只是让它消失! -
我也有类似的疑问..看到这个问题:stackoverflow.com/questions/755196/…
-
但是
free不能释放const指针。它的签名是free(void*),而不是free(void const*)。