C语言 将用于分配内存的指针声明为const是否有缺点?



我突然想到,如果我使用const指针声明一块内存,像这样:

SomeType * const pointer = malloc(sizeof *pointer);

我不能意外地"丢失"指针(即通过修改或覆盖它)。这似乎是一个方便的"提醒",它指向的内存需要被释放。这样做有不好的地方吗?许多事情浮现在脑海中,可能是因为从函数返回指针,或者因为它可能与大量库函数不兼容。然而,这些似乎是不方便,而不是一个实际的错误。

我不明白。你还是可以忘记free

的缺点是,你不能设置它为0后,你释放它,表明它已经释放,所以你可能会冒险调用free两次(想想一些错误处理代码,想象它可能发生)。

EDIT:另外,正如@Dmitri在评论中所说的,声明指针const可以防止您重新分配它(通过任何方式)。

最新更新