I think the problem is caused by the fact that your array points to literal strings that are stored in a write-protected area. For example, if you try a simpler fragment like this:
char * s = "abc";
s[1] = 'd';
then you will see the same run-time error. The problem can be solved by storing your strings in a write-allowed area: e.g. on "stack" or on "heap" allocated with new etc.
Since the above sample works if is changed to:
char s[] = "abc";
maybe it is suitable to you to change the definition of variable and argument to something like this:
void func(char temp[][20]);
and
char temp[][20] = { "0001110011", "1110001100" };
Now it is allocated on writable stack. Also consider using of std:: string and std:: vector classes, which allocate data on stack and heap.
I hope this makes sense.