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

内存都有哪些存储区(内存储器是rom还是ram)

  • 内存
  • 2024-06-10 10:23:33
  • 6526

一、M代表什么内存?

M代表内部存储区域。MB表示字节长度的操作数在内部存储区,MW表示字长度的操作数在内部存储区,MD表示双字长度的操作数在内部存储区。储藏区域。储藏区域。

操作数包含两个元素:标识符和标识参数。标识符用于指示操作数所在的存储区域,操作数个数用于指示操作数在存储区域中的具体位置。

存储区域包括:输入图像区域(I)、输出区域(Q)、内部存储区域(M)、物理输入区域(PI)、物理输出区域(PQ)、数据块(DB))、数据块(DI)、临时堆栈(L)

辅助标识符包括:X(位)、B(字节)、W(字-2字节)、D(双)字-4字节)

扩展信息

西门子PLC有三种编程语言:梯形图、STL和SCL。STL编程语言能完成的功能内容基本上是100%。STL的强大之处在于它不仅可以随意处理梯形图中的各种逻辑关系,而且还具有梯形图无法做到的运算、指针等复杂功能。

STL指令及其结构:

一条完整的STL指令应包含指令符号+操作数。操作数是指令的目标,即指令操作的地址。

注意:有些语句指令没有操作数,其运算对象是唯一的,例如

NOT//反转逻辑运算结果(RLO)

参考资料:西门子官网-SIMATICS7-300程序声明列表


二、内存的分配方式有几种分配内存的三种方式:
1.从静态存储分配:此时的内存是在程序编译时分配的,并且在程序执行的整个过程中都存在。这里存放的是全局变量、静态变量等。
2.栈区的放置:相关代码执行时创建,执行结束时自动释放。局部变量存储在这里。堆栈内存分配操作内置于处理器的指令集中,非常高效,但容量有限。
3.分配到堆空间:动态分配内存。它使用new/malloc打开并使用delete/free释放。有效期由用户指定,灵活。但也存在内存泄漏等问题。
常见的内存错误及其对策
1.内存分配失败,但已被使用。
解决办法:使用内存前请确保分配成功。请用p!=NULL判断。
2.内存已成功分配并使用,无需初始化。
内存默认值没有统一的标准。大多数编译器从0开始,但情况并非总是如此。
对策:初始化内存时赋值初始值。
3.内存操作超出范围。
对策:请小心。
4.内存已被释放但仍在使用中。
(1)使用野指针来显示删除和释放。
解决方案:释放内存后将指针设置为NULL。
(2)使用隐式删除和释放野指针。主要指返回堆栈内存的指针或引用的函数。
对策:当然不回去。
5.内存未释放,出现内存泄漏。
使用new/malloc释放内存,使用delete/free释放内存。
解决方法:新建和删除的数量必须相同。new[]和[]delete必须对应。