CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

先是断言错误,我选择"取消",然后提示:unhandled exception in justysdcer.exe 0xc000fd:statck overflow?代码如下,哪里溢出了呀?看

楼主sealdh(ddx)2004-01-01 19:48:15 在 VC/MFC / 基础类 提问

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)请教~~

关键词

  • 代码
  • 数据
  • 服务器
  • 执行
  • 客户
  • recvfiledata
  • 错误
  • 没人会吗
  • cfile
  • tmpfile

得分解答快速导航

  • 帖主:sealdh
  • broadoceans
  • affected
  • bluebohe
  • fzd999
  • brytison
  • houwenqiang

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo