我突然想到,如果我使用const指针声明一块内存,像这样:
SomeType * const pointer = malloc(sizeof *pointer);
我不能意外地"丢失"指针(即通过修改或覆盖它)。这似乎是一个方便的"提醒",它指向的内存需要被释放。这样做有不好的地方吗?许多事情浮现在脑海中,可能是因为从函数返回指针,或者因为它可能与大量库函数不兼容。然而,这些似乎是不方便,而不是一个实际的错误。
我不明白。你还是可以忘记free
的缺点是,你不能设置它为0
后,你释放它,表明它已经释放,所以你可能会冒险调用free
两次(想想一些错误处理代码,想象它可能发生)。
EDIT:另外,正如@Dmitri在评论中所说的,声明指针const
可以防止您重新分配它(通过任何方式)。