热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

高分….快进!!!(进者有分)

我有一个串口通讯程序,它向串口写数据后等待对方传回数据,再返回该传回的数据,如果只运行几次,没有问题,如果多次运行,会出现如下问题:debugAssertionFailed.Progr
我有一个串口通讯程序,它向串口写数据后等待对方传回数据,再返回该传回的数据,
如果只运行几次,没有问题,如果多次运行,会出现如下问题:
debug Assertion Failed.
Program :E:\my.exe.
File:dbgheap.c
Line:1017

Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

For information on how your program can cause
An assertion failure,see the Visual C++ document on assert

我想是关于断言的问题,但该问题具体是什么引起的??
欢迎大家发言,发言的都有分.

19 个解决方案

#1


能给出程序吗?

#2


buffer是不是溢出了?

#3


你是不是使用多线程来收发串口数据,如果是的话,在使用多线程的时候,有没有控制住对共享资源的同步和互斥问题,这种情况一般是由于你申请了一块内存用来存放收到的串口数据,然后在第二次使用之前把这些内存释放掉了。可以参考临界区加以控制,另外,不要动态申请内存,可以静态的申请一个大一点的数组。现在内存很便宜,多申请一点没有坏处。

#4


buffer的容量可能已经达到最大限度了,你应当在每次发过后就清空buffer,这样就不会有问题,而且发送到串口的也才是你自己真正想要得到的数据。

#5


to largebeard(潇潇):
   buffer应该不会溢出,我把输入、输出缓冲区都设为2048,而我发一次数据才几十字节,每次发完数据,都会等读到输入区数据后才会再发。应该不会吧。

#6


to superaf(阿斐):
  你是说WriteFile(写串口)后要清空输出缓冲区吗?我觉得不需要,数据发完后缓冲区不是自动清空了吗?

#7


就是buffer溢出了,你仔细查看看. 

#8


如果你是在线程中申请的buffer ,那么在线程退出前应该释放内存空间

#9


我也认为是BUFFER溢出

#10


yes

#11


to mosquitosj(蚊子):
  我是用的new char和定义的字符数组,它需要在退出时释放吗?

另外大家说的buffer是指串口的缓冲区还是指程序定义的?

#12


大家说的buffer溢出,是指串口的还是自己定义的?
我定义了很多buffer,如何判断是那一个溢出呢?

#13


大家帮我想想吧!

#14


可能是串口堆溢出。

#15


可能是串口堆溢出。 用PurgeComm清空缓存。 

#16


可能是BUFFER溢出

#17


是串口的buffer,你能不能指出那句出错,单步跟踪一下

#18


我跟了,看不到.
如果是串口的buffer,那是为什么?
我每次发送的数据量很小呀!而且readfile和writefile都会自动清空缓存,是吗?

#19


大家说说吧!

#20


  • 《庄子·杂篇·庚桑楚第二十三》
  • 高分请教bcp导入数据问题,顶者有分

推荐阅读
author-avatar
手机用户2702935165
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有