void test3(char* str1) { if(str1 == NULL){ return ; } char string[10]; if( strlen( str1 ) <= 10 ) { strcpy( string, str1 ); } }
char* strcpy(char* dst,const char* src){ assert(dst!=NULL&&src!=NULL); char* ret=dst; while((*dst++=*src++)!='\0'); return ret; }可以看到复制的时候是先赋值在在判断,也就是说src的'\0'会被赋值到dst中,所以导致dst越界。