我正在网上寻找安全管理内存分配/释放的一些指导方针.但是找不到一些好的来源.
我想也许在这个网站上堆积一个也许是个好主意.我可以从一些开始,表明我的意思,也许有人可以"改进"它,以便我们有一个完整的指南列表,帮助我们确保(在最大程度上)我们正确地管理内存.
示例:
始终在声明时初始化指针.
int*p = NULL;
Run Code Online (Sandbox Code Playgroud)检查malloc的返回类型
int *p = malloc(sizeof(int));
if(p==NULL)
{
/* do some error handling*/
}
Run Code Online (Sandbox Code Playgroud)每个都malloc应该有对应的free
可能的问题是两次释放内存.怎么避免呢?删除后将指针指定为NULL.
free(p);
p=NULL;
Run Code Online (Sandbox Code Playgroud)
注意:正如注释中所指出的,如果一个对象有两个指针,这就无法保护.它已经使用其中一个指针释放了.
否则,如果遵循这些指导原则,这似乎是非常安全的方式来管理我的内存.
有任何想法吗?建议?
编辑:问题已经发生了很大的变化,所以这里有一个"第一"问题的样本:
在本指南中,我看到的一个问题是,如果在某种
malloc情况下,在自由指针之后和之前分配了一些随机垃圾内存 - 在这种情况下,程序员应该确保不会发生这种情况.否则free将尝试释放垃圾内存并可能崩溃.
只需使用const指针!
int * const p = malloc(sizeof(int));
if(p==NULL)
{
/* do some error handling*/
}
/* do what you want with p, but you won't be able to change its value */
free(p);
Run Code Online (Sandbox Code Playgroud)
您不需要初始化p为NULL,因为如果发生错误则malloc()返回NULL.
您不需要检查是否p为NULL,free()将为您检查.
| 归档时间: |
|
| 查看次数: |
908 次 |
| 最近记录: |