Right. This is not actually related to v6.35; the difference is present between v7.52 and v7.53. There were some major changes between v7.52 and v7.53, the most important of which was increasing maximum string length, which is something that had been requested for a long time. This in turn required increasing the reserve stack size from 2MB to 8MB.

It is the reserve stack size that is causing this.

I just realized that I was misreading the results from your script. I have just run your script again, changing the /inc amount to 1MB per loop. When I run the script under v6.35 and v7.68 here, the difference in memory allocation is literally the stack size. So I am not seeing your results.

I also compared the /bset code from v6.35 to v7.68 and they are doing the same thing: malloc() and then realloc(). There is practically no difference in the code. I tested this in a simple C application that just does malloc()/realloc() and saw the same results.

So my guess is that this is down to how much memory is being allocated, how the C malloc() library is managing the memory, and so on, before your script runs. In this case, if mIRC is making thousands of calls, which it does, to allocate memory for various features, and you then attempt to allocate the largest possible chunk of memory, the current memory usage will affect that.