How To

Arrays in Subs...are they deleted after sub reaches end sub?

0

Alice 2020-11-17 10:05

I need an array in my sub for calculations but don’t need to retain it. Usually arrays disappear when out of the sub (cleared) same with LowRes?...are they no longer counted towards the variable limit?

If not, I imagine having a global array that is reused would be the only answer.


was8bit 2020-11-17 13:32 (Edited)

I would guess that they both would count, that the count will be the same regardless of whether or not the array is global or local to the sub...

If your game is facepaced, it would be interesting to arrange a speed test for both a global or sub local array to see which performs faster ...


Timo 2020-11-17 13:32 (Edited)

They should disappear... if there is no bug in the system ;)

So if you have a recursive SUB they count for every call.


Alice 2020-11-18 00:04

Ummm...ok. So....local dims don’t get released after exiting a sub? Not clear with the “should” answer...and not really concerned with speed...it’s a text based rpg.


Alice 2020-11-18 00:27 (Edited)

...so...arrays do get released after being created in a sub. Good to know.

FOR X=1 TO 100000
CALL WHAT_EVER
NEXT X

PRINT "MADE ";X;" ARRAYS."
END

SUB WHAT_EVER
DIM SUM_ARRAY(10)
END SUB


Alice 2020-11-18 00:41

...also...max arrays in a recursive sub (sub that calls itself) is 126. Out of memory at 127.

GLOBAL COUNTER
COUNTER=0
CALL WHAT_EVER(COUNTER)
END

SUB WHAT_EVER(COUNTER)
COUNTER=COUNTER+1
DIM WHAT_EVER(10)
IF COUNTER=126 THEN
PRINT "MADE ";COUNTER;" ARRAYS."
EXIT SUB
END IF
CALL WHAT_EVER(COUNTER)
END SUB


Alice 2020-11-18 00:56

...and yes...the maximum number of arrays is 256. Out of memory at 257.

DIM ARRAY_1(10)
DIM ARRAY_2(10)
DIM ARRAY_3(10)
DIM ARRAY_4(10)
DIM ARRAY_5(10)
DIM ARRAY_6(10)
DIM ARRAY_7(10)
DIM ARRAY_8(10)
DIM ARRAY_9(10)
DIM ARRAY_10(10)
DIM ARRAY_11(10)
DIM ARRAY_12(10)
DIM ARRAY_13(10)
DIM ARRAY_14(10)
DIM ARRAY_15(10)
DIM ARRAY_16(10)
DIM ARRAY_17(10)
DIM ARRAY_18(10)
DIM ARRAY_19(10)
DIM ARRAY_20(10)
DIM ARRAY_21(10)
DIM ARRAY_22(10)
DIM ARRAY_23(10)
DIM ARRAY_24(10)
DIM ARRAY_25(10)
DIM ARRAY_26(10)
DIM ARRAY_27(10)
DIM ARRAY_28(10)
DIM ARRAY_29(10)
DIM ARRAY_30(10)
DIM ARRAY_31(10)
DIM ARRAY_32(10)
DIM ARRAY_33(10)
DIM ARRAY_34(10)
DIM ARRAY_35(10)
DIM ARRAY_36(10)
DIM ARRAY_37(10)
DIM ARRAY_38(10)
DIM ARRAY_39(10)
DIM ARRAY_40(10)
DIM ARRAY_41(10)
DIM ARRAY_42(10)
DIM ARRAY_43(10)
DIM ARRAY_44(10)
DIM ARRAY_45(10)
DIM ARRAY_46(10)
DIM ARRAY_47(10)
DIM ARRAY_48(10)
DIM ARRAY_49(10)
DIM ARRAY_50(10)
DIM ARRAY_51(10)
DIM ARRAY_52(10)
DIM ARRAY_53(10)
DIM ARRAY_54(10)
DIM ARRAY_55(10)
DIM ARRAY_56(10)
DIM ARRAY_57(10)
DIM ARRAY_58(10)
DIM ARRAY_59(10)
DIM ARRAY_60(10)
DIM ARRAY_61(10)
DIM ARRAY_62(10)
DIM ARRAY_63(10)
DIM ARRAY_64(10)
DIM ARRAY_65(10)
DIM ARRAY_66(10)
DIM ARRAY_67(10)
DIM ARRAY_68(10)
DIM ARRAY_69(10)
DIM ARRAY_70(10)
DIM ARRAY_71(10)
DIM ARRAY_72(10)
DIM ARRAY_73(10)
DIM ARRAY_74(10)
DIM ARRAY_75(10)
DIM ARRAY_76(10)
DIM ARRAY_77(10)
DIM ARRAY_78(10)
DIM ARRAY_79(10)
DIM ARRAY_80(10)
DIM ARRAY_81(10)
DIM ARRAY_82(10)
DIM ARRAY_83(10)
DIM ARRAY_84(10)
DIM ARRAY_85(10)
DIM ARRAY_86(10)
DIM ARRAY_87(10)
DIM ARRAY_88(10)
DIM ARRAY_89(10)
DIM ARRAY_90(10)
DIM ARRAY_91(10)
DIM ARRAY_92(10)
DIM ARRAY_93(10)
DIM ARRAY_94(10)
DIM ARRAY_95(10)
DIM ARRAY_96(10)
DIM ARRAY_97(10)
DIM ARRAY_98(10)
DIM ARRAY_99(10)
DIM ARRAY_100(10)
DIM ARRAY_101(10)
DIM ARRAY_102(10)
DIM ARRAY_103(10)
DIM ARRAY_104(10)
DIM ARRAY_105(10)
DIM ARRAY_106(10)
DIM ARRAY_107(10)
DIM ARRAY_108(10)
DIM ARRAY_109(10)
DIM ARRAY_110(10)
DIM ARRAY_111(10)
DIM ARRAY_112(10)
DIM ARRAY_113(10)
DIM ARRAY_114(10)
DIM ARRAY_115(10)
DIM ARRAY_116(10)
DIM ARRAY_117(10)
DIM ARRAY_118(10)
DIM ARRAY_119(10)
DIM ARRAY_120(10)
DIM ARRAY_121(10)
DIM ARRAY_122(10)
DIM ARRAY_123(10)
DIM ARRAY_124(10)
DIM ARRAY_125(10)
DIM ARRAY_126(10)
DIM ARRAY_127(10)
DIM ARRAY_128(10)
DIM ARRAY_129(10)
DIM ARRAY_130(10)
DIM ARRAY_131(10)
DIM ARRAY_132(10)
DIM ARRAY_133(10)
DIM ARRAY_134(10)
DIM ARRAY_135(10)
DIM ARRAY_136(10)
DIM ARRAY_137(10)
DIM ARRAY_138(10)
DIM ARRAY_139(10)
DIM ARRAY_140(10)
DIM ARRAY_141(10)
DIM ARRAY_142(10)
DIM ARRAY_143(10)
DIM ARRAY_144(10)
DIM ARRAY_145(10)
DIM ARRAY_146(10)
DIM ARRAY_147(10)
DIM ARRAY_148(10)
DIM ARRAY_149(10)
DIM ARRAY_150(10)
DIM ARRAY_151(10)
DIM ARRAY_152(10)
DIM ARRAY_153(10)
DIM ARRAY_154(10)
DIM ARRAY_155(10)
DIM ARRAY_156(10)
DIM ARRAY_157(10)
DIM ARRAY_158(10)
DIM ARRAY_159(10)
DIM ARRAY_160(10)
DIM ARRAY_161(10)
DIM ARRAY_162(10)
DIM ARRAY_163(10)
DIM ARRAY_164(10)
DIM ARRAY_165(10)
DIM ARRAY_166(10)
DIM ARRAY_167(10)
DIM ARRAY_168(10)
DIM ARRAY_169(10)
DIM ARRAY_170(10)
DIM ARRAY_171(10)
DIM ARRAY_172(10)
DIM ARRAY_173(10)
DIM ARRAY_174(10)
DIM ARRAY_175(10)
DIM ARRAY_176(10)
DIM ARRAY_177(10)
DIM ARRAY_178(10)
DIM ARRAY_179(10)
DIM ARRAY_180(10)
DIM ARRAY_181(10)
DIM ARRAY_182(10)
DIM ARRAY_183(10)
DIM ARRAY_184(10)
DIM ARRAY_185(10)
DIM ARRAY_186(10)
DIM ARRAY_187(10)
DIM ARRAY_188(10)
DIM ARRAY_189(10)
DIM ARRAY_190(10)
DIM ARRAY_191(10)
DIM ARRAY_192(10)
DIM ARRAY_193(10)
DIM ARRAY_194(10)
DIM ARRAY_195(10)
DIM ARRAY_196(10)
DIM ARRAY_197(10)
DIM ARRAY_198(10)
DIM ARRAY_199(10)
DIM ARRAY_200(10)
DIM ARRAY_201(10)
DIM ARRAY_202(10)
DIM ARRAY_203(10)
DIM ARRAY_204(10)
DIM ARRAY_205(10)
DIM ARRAY_206(10)
DIM ARRAY_207(10)
DIM ARRAY_208(10)
DIM ARRAY_209(10)
DIM ARRAY_210(10)
DIM ARRAY_211(10)
DIM ARRAY_212(10)
DIM ARRAY_213(10)
DIM ARRAY_214(10)
DIM ARRAY_215(10)
DIM ARRAY_216(10)
DIM ARRAY_217(10)
DIM ARRAY_218(10)
DIM ARRAY_219(10)
DIM ARRAY_220(10)
DIM ARRAY_221(10)
DIM ARRAY_222(10)
DIM ARRAY_223(10)
DIM ARRAY_224(10)
DIM ARRAY_225(10)
DIM ARRAY_226(10)
DIM ARRAY_227(10)
DIM ARRAY_228(10)
DIM ARRAY_229(10)
DIM ARRAY_230(10)
DIM ARRAY_231(10)
DIM ARRAY_232(10)
DIM ARRAY_233(10)
DIM ARRAY_234(10)
DIM ARRAY_235(10)
DIM ARRAY_236(10)
DIM ARRAY_237(10)
DIM ARRAY_238(10)
DIM ARRAY_239(10)
DIM ARRAY_240(10)
DIM ARRAY_241(10)
DIM ARRAY_242(10)
DIM ARRAY_243(10)
DIM ARRAY_244(10)
DIM ARRAY_245(10)
DIM ARRAY_246(10)
DIM ARRAY_247(10)
DIM ARRAY_248(10)
DIM ARRAY_249(10)
DIM ARRAY_250(10)
DIM ARRAY_251(10)
DIM ARRAY_252(10)
DIM ARRAY_253(10)
DIM ARRAY_254(10)
DIM ARRAY_255(10)
DIM ARRAY_256(10)

PRINT "CREATED 256 ARRAYS"

END


nathanielbabiak 2020-11-18 02:36 (Edited)

Edit: I tested my snippets on an actual program. Testing proves the rules are more complicated than easy to explain. The brute-force approach worked though - I had 161 variables remaining.

Also, there's no speed difference between any of these options - check out the "advanced" section of the manual.


Alice 2020-11-18 04:31

Thanks...very useful.


was8bit 2020-11-18 04:32

I enjoy this kind of deep thinking :)


nathanielbabiak 2020-11-18 04:35

I usually do to, but after a while my brain hurts!

(And speaking of, the Ray Casting Demo is updated. Check it out!)


Alice 2020-11-18 04:37

Lol...nice.


Alice 2020-11-18 04:37

New issue posted... :(


Log in to reply.