Hi,
I hope I do not sound pedantic, I can be wrong.
Given your piece of code there are 2 reasons :

Zero_
There are only assignments. Take this piece of code

byte result[255];
memset(result,0, sizeof(result));

for(int i = 0; i < limits; i++) 
 result[i] += fct(i); 
 // There is no reasons to use "+=" because result[i] is 0 (+= is from your git)
 // So result is only assigned
 // So there is no reason to initialize to 0 IIF the loop is entered at least once and limits == sizeof(results)
 // see empty_like


Copy_
Copying is useless because you can just swap tensors instead: one is assigned (say current), the other holds the prev step (say prev).

auto prev = test_tensor_2; // reference semantics (just like a shared_ptr if you prefer)
auto current = test_tensor; // 

for(int step=...
{
    for(int i= ...)
        current[i] = fct(i);

    swap(prev, current); // No copy
}

I can take a close look at your code if you like but I hope you get my point.