So the answer is:
Yes, [NSString stringWithCString:encoding:] does copy the source CString to it's internal structure. If the source CString was allocated on a memory heap, it can be freed immediately after NSString object creation.
The error message I got, was caused be a bug inside signature computing code. Due to a wrongly initialized index variable in a for loop, code was writing beyond the allocated memory.