将用于分配内存的指针声明为const

时间:2016-10-09 08:59:19

标签: c pointers

令我感到震惊的是,如果我使用const指针声明一块内存,就像这样:

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

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

1 个答案:

答案 0 :(得分:1)

我不明白。你仍然可以忘记free它。

缺点是,在释放它之后你不能将它设置为0以表明它已被释放,因此你可能有两次调用free的风险(想想一些错误处理代码,想象一下它可能发生。)

编辑:此外,正如@Dmitri在评论中所说,声明指针const会阻止您重新分配它(无论采用何种方式)。