恭喜,你发布的帖子
发布于 2025-09-02 18:48:46
55楼
1如果没用到向导或者库且子程序只有一个接口指针
A任意一个子程序里只有一个接口一级指针;则很容易找出子程序自身的干涉区:m==公共栈字节数+n个私有区*每个私有区栈字节数;子程序接口指针是&VBxx则这个子程序占用区是: VBxx到VBxx+m.
B子程序里除了自身的接口一级指针外,还有二级指针则如下图,变量表里的"#从数据址"是一个二级指针;此时m==公共栈字节数26个字节+n私有从站数12个*每个从站占用的栈字节23字节+{2*(N1读从寄存数+N2读从寄存数...+Ni读从寄存数)+4*(N1写从寄存数1+N2写从寄存数...+Ni写从寄存数)}大括号内是二级指针涉及的堆字节数;此时子程序接口指针是&VBxx则这个子程序占用区是: VBxx到VBxx+m.
2如果有向导或者库还要计算向导以及库的内存占用区
3对于强类型语言,如果向导和库也是A或者B那样的类似函数指针接口式的构成,则所有的占用区都可以方便的计算出来,动态数组集合等预留的存储区也可以编译时就算出预留的方便动态扩展的占用字节数.
你这还没能将modbus rtu的那些功能封装到一个子程序里啊,我的程序都被许多工友验证使用通过了,反馈非常好。
请填写推广理由:
分享
只看
楼主