Runtime Error when using array of structs of unknown size as variable within class - some kind of overflow issue?
The problem is most likely here:

_array = new MeasuredMass[_size];


You're allocating _size * sizeof(MeasuredMass) bytes in the heap. If _size is too big the amount of memory allocated becomes too great and it fails to allocate. You should check if _array is NULL or not after the new.  If it's NULL then it failed to allocate.

The problem is that heap allocation is limited to 2kB. This is regardless of the amount of memory you actually have in the chip. This is a limit imposed by the compiler (actually the libraries bundled with the compiler) and is set by a value in the linker script.  It's something I've been campaigning to have removed from the libraries for many years, but it's always fallen on deaf ears. So much so that I provide a "fixed" version of the compiler in UECIDE that removes this hard limit.

The best thing you can do is to not use dynamic allocation. Instead have a statically created array which you then pass to the constructor.

MeasuredMass massBuffer[25];
RingBuffer massRing(massBuffer, 25);


and:

RingBuffer(MeasuredMass *buf, unsigned int size){
  _size = size; //forgetting to put this line -&gt;div0-&gt; &gt;1hr debugging :(
  _array = buf;
  for (int i = 0; i &lt; _size; i++){
    _array[i].mg = 0.0;
  }
}