发布于 2012-09-02 19:28:40
14楼
这是嵌套调用,但如果是平级调用呢?L区就会被覆盖。
记得在某个300手册中看到一个示意图,后来再找,没找到,大意是这样的
临时变量L都是从堆栈中进行分配的,如果嵌套调用,调用者的L区会被保存,被调用的子程序会从堆栈中未占用空间分配,如果一个块已经执行完成,其所分配的空间会被标记为未用,如果有需求,会被重新分配。
如果OB1调用FC1和FC2,FC1和FC2分别需要30和20字节的L区,那么FC1后10字节的L区会保留,前20字节会被FC2覆盖。
如果OB1调用FC1,FC1调用FC2,那么所有的都会被保留。