什么是内存泄露、内存溢出?如何防止?

什么是内存泄露、内存溢出?如何防止?

  内存泄露 内存溢出
通俗解释 1、操作系统以为用户还占有某块内存, 但用户丢掉了该内存的地址, 失去对该内存的使用权;
2、调用 char *p = malloc(100), 但紧接着 p = NULL, 那么这 100 个字节将永远得不到访问, 除非程序结束, 操作系统回收内存。
1、内存不够用, 剩余的内存空间不足以满足需求;
2、企图开辟过大的空间,比如:栈对象 int num[4096][4096]是极易初始化失败的, 尤其是在线程函数中出现时。
防止方法


1、在C++中智能指针可以做到堆对象自动释放,这能有效避免内存泄露;
2、使用托管类接管堆对象(锁管理就是一个例子),避免异常中断导致灾难性的资源泄露;

3、能使用栈对象就不要使用堆对象,避免忘记释放堆对象(这个不报错,但有隐患);


1、采用即用即释放、以时间换空间的原则。(数据库内存占用较高使用频率较低时,可按照打开—访问—关闭的策略访问)
2、养成良好的资源管理习惯和意识,尽可能做到代码逻辑正确的同时,不浪费资源,不闲置资源、不过多占用资源。

猜你喜欢

转载自blog.csdn.net/weixin_50019298/article/details/114981659