编好的程序运行时出现“0x00405433指令引用的0x000000000a内存,该内存不能为read”是咋回事?如何解决

编好的程序运行时出现“0x00405433指令引用的0x000000000a内存,该内存不能为read”是怎么回事?怎么解决?
编好的程序运行时出现“0x00405433指令引用的0x000000000a内存,该内存不能为read”是怎么回事?怎么解决?

代码如下:
#include<winsock2.h>
#include<stdio.h>
#include<windows.h>
#pragma comment (lib,"WS2_32.lib")
int main()
{
WSADATA data;
WORD w=MAKEWORD(2,0);
::WSAStartup(w,&data);
SOCKET s;
char szText[10]={0};
s=::socket(AF_INET,SOCK_STREAM,0);
sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(75);
addr.sin_addr.S_un .S_addr=inet_addr("127.0.0.1");
printf("%s\r\n",sizeof(szText),0);
::connect(s,(sockaddr*)&addr,sizeof(addr));
::recv(s,szText,sizeof(szText),0);
printf("%s\r\n",szText);
::closesocket(s);
::WSACleanup();
if(getchar())
{
return 0;
}
else
{
  ::Sleep(100);
}
}


------解决方案--------------------
printf("%s\r\n",sizeof(szText),0);

不报错才怪。
------解决方案--------------------
printf("%s\r\n",sizeof(szText),0);

不报错才怪。
------解决方案--------------------
探讨
printf("%s\r\n",sizeof(szText),0);

不报错才怪。

------解决方案--------------------
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。