char str1[]= "To be or not to be";
char str3[]= "To eat or to eat";
char * str2=(char*)malloc(80);
//char str3[40];
str2[0]=NULL;
/* copy to sized buffer (overflow safe): */
strcat(str2, str1);
strcat(str2, str1);
free(str2);str2[0]=NULL;//<<==Marked line
strcat(str2, str3);
strcat(str2, str3);
在下面的代码中,该操作正常打印“吃或不吃”2次,但如果我删除了“str2 [0] = NULL;”从标志线不起作用,并且两次打印“是或不是”并且“吃或不吃两次”为什么?C malloc和免费函数的奇怪行为
可能的重复[为什么我得到不同的结果,当我解除引用后解除引用?](http://stackoverflow.com/questions/1078677/why-do-i-get -different-results-when-i-de-reference-a-free-iting-it) –