c - 如何检查C中的指针是否空闲?
问题描述
有没有办法检查指针之前是否空闲?
例如,如果我运行此代码:
int* p = (int*)malloc(1000);
free(p);
p = (int*)realloc(p, 2000);
我得到错误:
*** Error in `./main': realloc(): invalid old size: 0x00000000012ab010 ***
...
我希望有机会p
在致电之前进行检查realloc
以避免此类错误。
解决方案
以下是您的检查方式:您之前释放过它吗?如果是这样,它已被释放。如果没有,不。
C 不会为您跟踪这一点,因此如果您忘记了是否已释放相关的内存,您可能想要NULL
输出任何指针。free
除非您明确说明您希望它做更多事情,否则 C 会做最少的事情:
free(p);
p = NULL;
现在您可以进行测试,但请记住,这样做是您的责任,因此如果此行为很重要,您必须始终如一地执行此操作。
推荐阅读
- r - 使用 row_number() - R 时跳过特定观察
- flutter - ListView 和 Card Flutter 中的额外“空间”
- installation - Wikibase 安装问题
- azure - 从 Azure Blob 下载特定文件的列表
- python - “ValueError:找不到 PeerChannel 的输入实体”与 Bot
- java - Gradle:找不到或加载主类
- android - 配置更改时如何维护片段?
- batch-file - 通过 Jenkins Windows 批处理命令删除文件(如果存在)
- jquery - 为什么 .ajax() 能够调用 WebMethod 而不能调用 .get()?
- ios - 尽管 URL 被命中,通用链接仍不执行操作