当前位置:首页 > 内存 > 正文

内存静态分配和动态分配

  • 内存
  • 2024-08-17 16:23:32
  • 1861

一、内存的分配方式有哪几种分配内存的三种方式:
1.从静态存储分配:此时的内存是在程序编译时分配的,并在程序运行期间持续存在。全局变量、静态变量等都存储在这里。
2.栈区分配:相关代码执行时创建,执行结束时自动释放。局部变量存储在这里。堆栈内存分配操作内置于处理器的指令集中,效率很高,但容量有限。
3.堆分配:动态分配内存。使用new/malloc时打开,使用delete/free时释放。寿命由用户指定且灵活。但存在内存泄漏等问题。
常见内存错误及解决方法
1.内存分配失败但已使用。
对策:使用内存前先检查分配是否成功。使用p!=NULL进行评估。
2.内存已成功分配并使用,无需初始化。
内存默认值没有统一的标准。大多数编译器都以0开头,但并非总是如此。
对策:初始化内存时赋初值。
3.内存操作越界。
对策:小心。
4.内存已释放但仍在使用中。
(1)使用野指针表示delete和free。
对策:释放内存后,将指针设置为NULL。
(2)使用隐藏删除功能和自由百搭符号。主要指返回堆栈内存的指针或引用的函数。
对策:当然不回来。
5.内存没有被释放,导致内存泄漏。
使用new/malloc打开内存,使用delete/free释放内存。
对策:new/malloc的数量必须相同;malloc和free的数量必须相同;new[]和[]delete必须对应。