【发布时间】:2022-01-15 23:34:10
【问题描述】:
我想知道是否可以检查变量是否仍在 c 中的范围内,或者指针是否指向超出范围的变量。我最终想要做的是检查指针,如果它们指向超出范围的变量,然后通过调用 free 删除指针。所以如果你们能帮助我,我会非常高兴。谢谢大家的贡献。
【问题讨论】:
-
在悬空指针上调用
free会调用未定义的行为。不,没有真正的方法来检查指针是否指向有效对象(或已释放的内存) -
超出范围是什么意思?它的值(地址)不指向用户分配的变量?如果您只有一个随机指针并想检查它是否指向一个变量,那么除非您在为其分配变量地址时手动跟踪它,否则没有办法做到这一点,例如。具有实际指针变量和 int 的结构,当您为该指针分配地址时,该结构仅包含 0 或 1。
-
如果您打算使用
free,那么这是使用malloc分配的内存,并且始终在“范围内”。 -
回答:不,这是不可能的。期间。
-
XY 问题。小心简单的程序。
标签: c pointers memory memory-management