char ServerName[128]; ZeroMemory(ServerName,sizeof(ServerName)); _snprintf_s(ServerName,sizeof(ServerName)-1,"192.168.10.1:3000"); //char *ServerName = "192.168.10.1:3000";
上面的代码原本是注释后面的。
我要将ServerName传到另一个函数中再解析成IP和端口号
而在解析函数中使用的是指针来寻找:的位置,截取后面的字节。
if (!(serverName)) //date not enough return FALSE; char *server_name = NULL; char *p; int port; server_name = serverName; if (server_name && (p = strchr(server_name, ':')) != NULL) { *p++ = 0; port = atoi(p);
在这里就会在运行中出现指针访问了非法的地址二中断
原因是第一段程序注释后的字符串是敞亮字符串是不能被修改的。故会在*p++处出现错误
所以 就改成了 第一段程序注释之上的代码 之后一切都OK。