2 qq 17482331 qq_17482331 于 2016.04.07 20:43 提问

0x101bb6ca (msvcr100d.dll) 处有未处理异常

两个线程的服务器程序,当两个客户端对其发送数据时,提示:server35.exe 中的 0x101bb6ca (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突
贴出代码如下:
#include
#include
#include
#include "mysql.h"
#include
#include
#include
#include
using namespace std;
#pragma comment(lib,"WS2_32.lib")
#pragma comment(lib, "libmysql.lib")
#pragma comment(lib,"wsock32.lib")

#define F_PATH "e:\VS2010_Project\location\location.txt"
DWORD WINAPI myfun1(
LPVOID lpParameter
);
DWORD WINAPI myfun2(
LPVOID lpParameter
);
static SOCKET s1,s2;
/*static char sztext[100];
static FILE f1;
static sockaddr_in addr,addr2;
static char *p1,*p2;
static char a1[20],a2[20];
static MYSQL mysql;
/
static sockaddr_in addr,addr2;
char query[150];

int main()
{
WSADATA data;
WORD w=MAKEWORD(2,0);
//char sztext[40];
HANDLE h1,h2;
::WSAStartup(w,&data);
SOCKET s;
s=::socket(AF_INET,SOCK_STREAM,0);
//sockaddr_in addr,addr2;
int n=sizeof(addr2);
addr.sin_family=AF_INET;
addr.sin_port=htons(6000);
addr.sin_addr.S_un.S_addr=INADDR_ANY;
::bind(s,(sockaddr*)&addr,sizeof(addr));
::listen(s,5);
printf("服务器已经启动\r\n");
// f1=fopen("location.txt","w");
//mysql_init(&mysql);
while(true)
{
s1=::accept(s,(sockaddr*)&addr2,&n);
h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL);
::Sleep(100);
//printf("有用户连入网络!\r\n");
s2=::accept(s,(sockaddr*)&addr2,&n);
h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL);
::Sleep(100);
::CloseHandle(h1);
::CloseHandle(h2);
//printf("又有用户连入网络!\r\n");
}

::closesocket(s);
//::closesocket(s1);
::WSACleanup();
if(getchar())
{
return 0;
}
else
{
::Sleep(100);
}

}
DWORD WINAPI myfun1(LPVOID lpParameter)
{
static char sztext[100];
//static FILE *f1;
//static char *p1[10];
static char a1[20],a2[20];
static MYSQL mysql;
//char *p1=new char[10];

if(s1!=NULL&&strlen(sztext)==0)
{
printf("%s已经连接上\r\n",inet_ntoa(addr2.sin_addr));
}
//printf("%s已经连接上\r\n",inet_ntoa(addr2.sin_addr));
::recv(s1,sztext,sizeof(sztext),0);
printf("%s\n",sztext);
strtok(sztext,":");
//p1=strtok(NULL,":");
strcpy(a1,strtok(strtok(NULL,":"),","));
//strcpy(a1,strtok(p1,","));
strcpy(a2,strtok(strtok(strtok(NULL,":"),","),","));
// /*fprintf(f1,a1);
// fprintf(f1,",");
// fprintf(f1,a2);
// fprintf(f1,"\n");
mysql_init(&mysql);
if(!(mysql_real_connect(&mysql,"localhost","assking","1992110328","LBS",0,NULL,0)))
{
printf("Error connecting to database:%s\n",mysql_error(&mysql));
}
else
{
printf("Connected...\n");
}
sprintf(query,"insert into loca(LO,LA)values('%s','%s')",a1,a2);

if(mysql_query(&mysql, query)) //执行SQL语句
{
printf("Query failed (%s)\n",mysql_error(&mysql));
}
else
{
printf("Insert success\n");
}
mysql_close(&mysql);
::closesocket(s1);
return 0;
}
DWORD WINAPI myfun2(LPVOID lpParameter)
{

static char sztext[100];
//static FILE *f1;
//static char *p2[10];
static char a1[20],a2[20];
static MYSQL mysql;
//char *p2=new char[10];
if(s2!=NULL&&strlen(sztext)==0)
{
printf("%s已经连接上\r\n",inet_ntoa(addr2.sin_addr));
}
//printf("%s已经连接上\r\n",inet_ntoa(addr2.sin_addr));
::recv(s2,sztext,sizeof(sztext),0);
printf("%s\n",sztext);
strtok(sztext,":");
//p2=strtok(NULL,":");
//strcpy(a1,strtok(p2,","));
strcpy(a1,strtok(strtok(NULL,":"),","));
strcpy(a2,strtok(NULL,","));
// /*fprintf(f1,a1);
// fprintf(f1,",");
// fprintf(f1,a2);
// fprintf(f1,"\n");
// mysql_init(&mysql);
if(!(mysql_real_connect(&mysql,"localhost","assking","1992110328","LBS",0,NULL,0)))
{
printf("Error connecting to database:%s\n",mysql_error(&mysql));
}
else
{
printf("Connected...\n");
}
sprintf(query,"insert into loca(LO,LA)values('%s','%s')",a1,a2);

if(mysql_query(&mysql, query)) //执行SQL语句
{
printf("Query failed (%s)\n",mysql_error(&mysql));
}
else
{
printf("Insert success\n");
}
mysql_close(&mysql);
::closesocket(s2);
return 0;
}

2个回答

oyljerry
oyljerry   Ds   Rxr 2016.04.07 22:01

直接编译器调试对应错误的代码行数 一般是指针问题

qq_17482331
qq_17482331 运行的时候是不报错的,只有在两个客户端同时在线,向服务器发送消息时才会报错。
2 年多之前 回复
qq_17482331
qq_17482331   2016.04.08 09:44

运行的时候是不报错的,只有在两个客户端同时在线,向服务器发送消息时才会报错。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++中发生“"0x54402fed (msvcr100d.dll) 处有未经处理的异常:”内存方面的错误的解决方案
C++中发生如"0x54402fed (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突" 这样的内存方面的错误的时候, 解决方案如下(来自于百度): 出现这个问题的原因是你在类当中定义了一个指针类型的变量 , 然后没有在构造函数中对其初始化 , 之后在使用到这个指针的时候就会提示这个错误    解决方法:
0x0fad13af (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000002 时发生访问冲突
//需要读取数据库 msg.setOption(1); EnterCriticalSection(&cs); //进入临界区 printf("Ask User Exists response back to the client: %d \n",msg.getUserNameLen()); LeaveCriticalSection(&cs); //离开临界区
XXX.exe 中的 0x5404723c (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xfeeefee8 时发生访问冲突
心情大爽,解决掉一个存在很久让我抓狂的BUG!!! 其实是重复调用了析构函数。   错误信息:XXX.exe 中的 0x5404723c (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xfeeefee8 时发生访问冲突 是在我点一个按钮想销除原有的数据时候出现在中断错误。   通过调用堆栈,找到最后出错代码是这段: CMultiAgen
0x657ac2b2 (msvcr80d.dll) 处未处理的异常: 0xC0000005: 读取位置 0xccccccc8 时发生访问冲突
开发环境 VS2005 + MFC基于对话框的工程 BOOL CVideoMFCApp::InitInstance() {     // 如果一个运行在 Windows XP 上的应用程序清单指定要     // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,     //则需要 InitCommonControlsEx()。否则,将无法创建窗口。     IN
“XXX.exe 中的 0xXXXXXXXX处未处理的异常: 0xC0000005: 读取位置 0xXXXXXXXX 时发生访问冲突”的一种解决方案
CxxxDlg *pDlg = (CxxxDlg*)AfxGetMainWnd(); 定时器回调函数中pDlg调用类成员变量和成员函数时出现以上错误。经观察pDlg为空指针,确实意想不到。   解决方法: 设置全局变量CxxxDlg* g_pDlg = NULL;并且在OnInitDialog函数中添加把this指针赋予该对话框指针,此时g_pDlg不为空,可以通过g_pDlg访问类成员变
glGenVertexArrays:0x00000000处未处理的异常 0xC0000005:Access Violation.内存错误
1.确认调用的变量已初始化: 如:glGenVertexArrays(nums,VAO),其中VAO必须进行初始化。 2.确认是在非远程桌面连接状态下进行的调试。 如:我用mstsc操作远程电脑,进行程序调试,一直报内存错误。我悲催的找了2天一直没有解决,后来,本地调试...通过!!!
关于VC中的0x????处未处理的异常:0xC0000005
转载于:http://hi.baidu.com/andywangcn/item/4b5a31594a06f1c8d2e10cc2 使用VC编码的时候经常会出现“Test.exe 中的 0x00414030 处未处理的异常: 0xC0000005: 写入位置 0xfeeefeee 时发生访问冲突 。”出现0xC0000005的原因一般都是没有分配内存 或者 内存无效 所致,
关于msvcr90.dll 未处理的异常 读取位置 访问冲突 的解决办法
<br />这两天碰到一个调试问题,程序运行的过程中会弹出窗口,显示如下内容:<br />XX.exe 中的 0x7855ae92 (msvcr90.dll) 处未处理的异常: 0xC0000005: 读取位置 0x005ab000 时发生访问冲突<br />描述一下问题:<br />通过字符串加载文件的过程中会弹出此框,初步确定是对字符串的处理,包括内存分配有问题导致的.<br /> <br />说明一下,XX.exe程序我正在维护的程序,分为Debug,Release,ReleaseU三种版本,其中Re
XXX.exe 中的 0x77c615de 处未处理的异常: 0xC00000FD: Stack overflow
然后 XXX.exe 中的 0x77c615de 处未处理的异常: 0x00000000: 操作成功完成。 不知啥意思。   代码绝对没问题,只改了一个宏的大小,后来怀疑是某个局部变量太大了超过了调用堆栈的限制, 在项目设置里,LIINK,系统,设置堆保留大小为8388608(比我那个局部数组尺寸大得多),然后测试就正常了。这样就不用优化了。不用new也不用做static,不改变逻辑,不改
解决xx.exe中的 0x004fd913 处未处理的异常: 0xC0000005: 读取位置 0xfeeefef2 时发生访问冲突
    想在MFC MDI的MainFrame显示前弹出一个对话框,确认了才让MainFrame显示,一开始是将加载对话框的代码放在了MainFrame的OnCreate方法里,不过却整天抛出"xx.exe中的 0x004fd913 处未处理的异常: 0xC0000005: 读取位置 0xfeeefef2 时发生访问冲突"的异常。 使用排除法,发现原来只要在OnCreate里返回-1的话就会抛