#include <iostream> using namespace std; void main() { char *buffer = new char (10); printf("before: %s\n",buffer); char temp[5] = {'1','2','3','4','5'}; //error,因为只分配5个空间,并且全占满,那么在11行的strcpy函数执行后,buffer中就没有null来表示字符串的结束了,而就是{'1','2','3','4','5','未知','未知','未知','未知','未知'} //char temp[6] = {'1','2','3','4','5'}; //fine strcpy(buffer,temp); printf("after: %s\n",buffer); }
如果使用chartemp[5] = {'1','2','3','4','5'};那么这个size为5的数组里最后一个元素为5,而不是null,所以strcpy(buffer,temp);了以后,buffer中的内容为{'1','2','3','4','5','未知','未知','未知','未知','未知'},那么没有'\0'结尾的话,就会出现读程序异常了。