繁体   English   中英

C中的可用内存:如何检查有效指针?

[英]Free memory in C : how to check for valid pointer?

我有这个程序,它通过指向内存区域(结构,数组)的指针在内存中存储很多东西,并且该用户可以随时启动该程序。 初始化时,程序需要释放以前使用的内存(如果有的话,这就是问题),并分配可能不同大小的新存储。

现在,在第一次初始化时,我不知道指针指向的是什么:特别是,我不知道它们是否是垃圾。 但是,如果没有,我需要释放他们的指点。 我怎么知道?

除了指向NULL的指针不指向任何东西外,无法检查给定的指针是否指向有效的东西。 跟踪仍然指向动态内存的指针是您的工作。 (指针可以指向自动和static变量,当然,您不得尝试free它。)

一旦他们free了相关的内存并依靠C标准将free(NULL)定义为无操作这一事实,大量的人便将指针设置为NULL 因此,您可以采用这种方法。

但是过分依赖此类代码可能会让人感到恶臭,因为它可能掩盖潜在的错误。 只是要更加注意内存管理。

或者您可以自己构建以下其中之一: https : //en.wikipedia.org/wiki/Boehm_garbage_collector

我们在这里谈论全球吗? 因为它们会自动初始化为零。 通常,您的程序应该以某种方式编写,即指针永远不要指向垃圾,而指向有效数据或具有NULL值( free(NULl)是无操作)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM