先是断言错误,我选择"取消",然后提示:unhandled exception in justysdcer.exe 0xc000fd:statck overflow?代码如下,哪里溢出了呀?看
UINT WINAPI RcvFileExcute(LPVOID lParam)//客户端接收线程
{
char recvFileData[1024]={0};//用于接收数据。(从服务器端传来的数据)
CFile tmpFile("C:\abc.txt",CFile::modeCreate|CFile::modeWrite);
tmpFile.Write(recvFileData,1024);//程序执行到了这一行,即提示stack overflow错误,哪的问题?
}
服务器端主要代码如下:
char fileData[1024]={0};
sendFile.Read(fileData,1024);
send(...)//向上面的客户端发数据
问题点数:20、回复次数:17Top
1 楼broadoceans(broadoceans)回复于 2004-01-01 20:03:09 得分 5
作为一个健壮的程序员
我觉得你应该判断一下是否收到了1024的数据。Top
2 楼sealdh(ddx)回复于 2004-01-01 20:10:43 得分 0
可在调试中发现,确实接收到了1024的数据。Top
3 楼chenweihello(呼噜噜~~~~~~~~~~)回复于 2004-01-01 20:20:30 得分 0
学习Top
4 楼sealdh(ddx)回复于 2004-01-01 20:37:48 得分 0
可是谁来教我们?来个人。Top
5 楼affected(超级无聊)回复于 2004-01-01 21:32:21 得分 4
char recvFileData[1024]={0};//用于接收数据。(从服务器端传来的数据)
CFile tmpFile("C:\abc.txt",CFile::modeCreate|CFile::modeWrite);
tmpFile.Write(recvFileData,1024);//程序执行到了这一行,即提示stack overflow错误,哪的问题?
单就这段代码来说,除了“C:\abc.txt”应该改为“C:\\abc.txt”之外,运行应该不会有错,如果你确实运行错误,那么应该是错在别处,你想想哪里和这里有交互Top
6 楼bluebohe(薄荷)回复于 2004-01-01 21:34:20 得分 2
UINT WINAPI RcvFileExcute(LPVOID lParam)//客户端接收线程
{
char recvFileData[1024]={0};//用于接收数据。(从服务器端传来的数据)
CFile tmpFile("C:\\abc.txt",CFile::modeCreate|CFile::modeWrite);
tmpFile.Write(recvFileData,1024);//程序执行到了这一行,即提示stack overflow错误,哪的问题?
}
应该肯定就是\\的问题Top
7 楼sealdh(ddx)回复于 2004-01-01 22:14:19 得分 0
不是这里的错,都怪我,其实C:\abc.txt本来是一个字符串,里面存放的是地址(全部是\\,而不是\),在这个贴子中是我写错了。
有的时候,我把recvFileData[1024]改成recvFileData[1025]就正确,但今天不知为什么,改成recvFileData[1025]也不对了。还是有问题。;Top
8 楼fzd999(花差花差)回复于 2004-01-01 22:14:59 得分 2
\\和\是一样的,没有问题
问题是你到底有没有收到这1024个字节Top
9 楼sealdh(ddx)回复于 2004-01-01 22:38:28 得分 0
肯定是收到1024个字节了,因为我跟踪的时候,显示长度确实是1024,是不是和'\0'有关呢?我说不清。Top
10 楼sealdh(ddx)回复于 2004-01-01 23:24:27 得分 0
到底是怎么调这样的错误啊????知道错了,但却不知道怎么改,提示了一大堆mfc里的东西,这谁能看明白?Top
11 楼sealdh(ddx)回复于 2004-01-01 23:31:33 得分 0
跟多线程是不是有关系呢?这样的错误根本就没法调试。因为它的提示太笼统,而且只要是一点击"取消"就自动进入mfc的源码,这我们多办时候是摸不清什么意思的。只能瞎改,改对了就算,改不了没办法了。
谁能帮帮我呀、Top
12 楼brytison(辉子)回复于 2004-01-02 00:47:34 得分 5
char recvFileData[1024]={0};
这个呢?是char recvFileData[1024]={'\0'};吧?Top
13 楼sealdh(ddx)回复于 2004-01-02 09:07:19 得分 0
出现上面的错误提示后,单击取消后,又出来一个地话框,提示:user breakpoint called from code at 0x4b4135,然后,我点确定,就进入了mfc的objcore.cpp中,如下面所示,小黄箭头指向(1)句,但我不明白这意味着什么,请帮忙
//objcore.cpp
#ifdef _DEBUG
void AFXAPI AfxAssertValidObject(const CObject* pOb,
LPCSTR lpszFileName, int nLine)
{
if (pOb == NULL)
{
TRACE0("ASSERT_VALID fails with NULL pointer.\n");
if (AfxAssertFailedLine(lpszFileName, nLine))
AfxDebugBreak();
return; // quick escape
}
if (!AfxIsValidAddress(pOb, sizeof(CObject)))
{
TRACE0("ASSERT_VALID fails with illegal pointer.\n");
if (AfxAssertFailedLine(lpszFileName, nLine))
AfxDebugBreak();
return; // quick escape
}
// check to make sure the VTable pointer is valid
ASSERT(sizeof(CObject) == sizeof(void*));
if (!AfxIsValidAddress(*(void**)pOb, sizeof(void*), FALSE))
{
TRACE0("ASSERT_VALID fails with illegal vtable pointer.\n");
if (AfxAssertFailedLine(lpszFileName, nLine))
AfxDebugBreak();
return; // quick escape
}
if (!AfxIsValidAddress(pOb, pOb->GetRuntimeClass()->m_nObjectSize, FALSE))
{
TRACE0("ASSERT_VALID fails with illegal pointer.\n");
if (AfxAssertFailedLine(lpszFileName, nLine))
AfxDebugBreak();//小黄箭头指向这里。.............(1)
return; // quick escape
}
pOb->AssertValid();
}Top
14 楼houwenqiang()回复于 2004-01-02 10:59:04 得分 2
可能是因为你的文件没有创建出来,对一个不存在的文件进行读写Top
15 楼sealdh(ddx)回复于 2004-01-02 11:27:58 得分 0
如果把我的程序改成release下执行,不会出现这个提示,而且操作也能成功运行。它母亲的!!
为什么在debug下会出现异常???而在release下运行结果会完全正确。
这也不行啊。。尽管在release下正常,那也得找出为debug下的错误啊。为了一个健壮的程序,这是最起码的要求吧。。。。请大家分析一下吧。在debug下,出现debug错误后,我就一直点击"忽略",点了有好几下,然后程序也能成功运行。何故??Top
16 楼sealdh(ddx)回复于 2004-01-02 11:35:29 得分 0
在release下运行一段时间后,又出现错误,说是abnormal termination。什么破东西呀。。。。Top
17 楼sealdh(ddx)回复于 2004-01-02 11:44:32 得分 0
没人会吗?没人会吗?没人会吗?没人会吗?
没人会吗?没人会吗?没人会吗?没人会吗?
没人会吗?没人会吗?没人会吗?没人会吗?
没人会吗?没人会吗?没人会吗?没人会吗?
没人会吗?没人会吗?没人会吗?没人会吗?
没人会吗?没人会吗?没人会吗?没人会吗?
没人会吗?没人会吗?没人会吗?没人会吗?
没人会吗?没人会吗?没人会吗?没人会吗?
真郁闷
怎么就到file.Write(..),这一句就不对呀?难道不能在线程中使用??
难道就没有人遇到过样的问题?
Top
相关问题
- Unhandled exception……
- unhandled excepion in interpt.ext(ntdll.dll):0xc0000005:access violation.
- 急!!!An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll
- Unhandled fault: alignment exception (93) at 0x00000001
- 执行错误:Unhandled exception
- Unhandled exception in ASClient.exe(MOUSEHOOK.DLL):0xc0000005:Access Violation
- Unhandled exception 是什么意思?
- 运行错误:Unhandled exception in hello.exe: 0xC0000005:Access Violation
- 如何在C++中捕获unhandled exception
- 递归就错(unhandled exception ...:stack overflow)请教~~




