????????????C/C++??????????У???????????????????????????????????????????????????????????????????????????磬?????????????????????????????????????????????????????????????????????????????????????????????????????????????????麯????????Ч????檔
????????????????????????????????????С???????п???????????淸??????????к???????????????????Щ????????????????????????????????????????????????漸???
????1?????????????malloc??new??????????棬?????????淵???????????????????????????????????????????????????????????????????????????治?????????memory Leak??????????????????????????crash?????????????????????????????????????????????????ЩWindows API?У???????????ЩAPI??????????????????ЩAPI??????????棩
????2????????????????????????????????????а???????????????????С????????????????????????Windows API??????????C????????????????buffer?????buffer??????????????????????????????????????????????????????????????????????棬???????????????????????????????Щ?鷳??????????????????????????????
????3???????????????????????????static???????static????????????????????治???????????????????????????????????????????????????????????????Щ?????????static?????????????????????????棬????????????????buffer???????????????????????????ú???????????????á?
???????????????????????????Щ????????static?????????????????????????????????????????塣???????????????????????????????????ɡ?
???????
?????й?socket???????????????????????У?inet_ntoa??????????????????????????????IP?????????????????????????????????????????????????
????char *inet_ntoa(struct in_addr in);
?????????????????????????????棬???????????????????????buffer???????????????“????static char[]”?????????????????????????????????????????????IP?????????????????inet_ntoa???????????????????????????????????????member??struct???????struct?и????????????????????????????????
????C++????
????struct in_addr {
????unsigned long int s_addr;
????}
????????IPV4????????IP????????8λ??bit?????????s_addr?У???λ????????????????紫??????????????s_addr??????????3776385196????????????Windows????????????????????????????????????????8λ???饗???????????
????11100001   00010111    00010000    10101100
????????????????????????????????225   23   16   172?? ????IP????? 172.16.23.225??
?????????????????????????????????????????????????????????????????????????μ????
????C++????
????struct in_addr src?? des;
????........
????........
????fprintf(fp?? "?IP???<%s>/t???IP???<%s>/n"?? inet_ntoa(src)??   inet_ntoa(des));
????????????????????????????????е??IP????????IP?????????????????????????????????????????????src.s_addr??des.s_addr??????????????????????????????????????????????????????????inet_ntoa??bug??
????C++????
????src.s_addr = 3776385196;    //?????172.16.23.225
????des.s_addr = 1678184620;  //?????172.16.7.100
?????????inet_ntoa()“????????”????????static char[]????????????????????????????????塣???????????????fprintf??????????fprintf??????????????inet_ntoa(des)???????????????????????????????????inet_ntoa(src)???????????????????????????????????????????inet_ntoa()?????static char[]?????????????????????????src??IP?????????des??IP???????????src??IP?????????????????????????????涼???????????????????????fprintf?????????????????????????????????????????????????????????
????????????inet_ntoa??man??????????????仰??The string is returned in a statically allocated buffer??  which  subsequent calls will overwrite. ??????????????
????С??
???????????????????????£???????д??????????????????????????????????????Σ????????????????????????????????????????????????????????
????C++????
????if ( strcmp( inet_ntoa(ip1)?? inet_ntoa(ip2) )==0 ) {
????…. ….
????}
?????????ж????????IP????????????????????????????——????????????????檔
?????????????????????漸???????
????1??????????????????????????????static????к??????塣
????2?????????????????????????????????????????????????????????????????????ж?????????????????????????????????copy?????????????????????????淵?????????????????????????????????????????
????3??C/C++???Σ??????磬?????????????????????????ɡ?
????????????Efftive C++?????????????????????????item 23?????????????????????á??????????????????????????static????????????????????????????