Files

32 lines
1000 B
QBasic
Raw Permalink Normal View History

10 REM Test string garbage collection
20 REM FRE("") triggers GC and returns free string space
30 F0 = FRE("")
40 IF F0 > 0 THEN PRINT "INITIAL OK" ELSE PRINT "INITIAL FAIL"
50 REM --- Allocate some string variables
60 A$ = STRING$(200, "A")
70 B$ = STRING$(200, "B")
80 C$ = STRING$(200, "C")
90 F1 = FRE("")
100 IF F1 < F0 THEN PRINT "ALLOC OK" ELSE PRINT "ALLOC FAIL"
110 REM --- Overwrite with shorter strings (old data becomes garbage)
120 A$ = "short"
130 B$ = "tiny"
140 C$ = "x"
150 F2 = FRE("")
160 IF F2 > F1 THEN PRINT "GC RECLAIMED" ELSE PRINT "GC FAIL"
170 REM --- Stress test: loop with string concatenation
180 CLEAR 4096
190 D$ = ""
200 FOR I = 1 TO 50
210 D$ = D$ + "X"
220 NEXT I
230 PRINT "CONCAT LEN="; LEN(D$)
240 F3 = FRE("")
250 IF F3 > 0 THEN PRINT "POOL OK" ELSE PRINT "POOL FAIL"
260 REM --- CLEAR with string space size
270 CLEAR 8192
280 F4 = FRE("")
290 IF F4 > 7000 AND F4 < 9000 THEN PRINT "CLEAR SIZE OK" ELSE PRINT "CLEAR SIZE FAIL"
300 PRINT "ALL DONE"
310 SYSTEM