插件发送数据时,数组越界的问题
1.问题的出现
为了简化边缘网关的开发难度,将轮询,控制和处理放到一个cpp(OTM99Drive.cpp)当中,其他业务处理放到另一个cpp(realadapter.cpp)当中,这样以后编写新的插件就可以只更新OTM99Drive.cpp就可以了,因为这样的措施导致了问题---数组越界。
2.问题的具体分析
(1)OTM99Drive.cpp当中的代码
(2)realadapter.cpp
如上图可见,realadapter定义了大小为1024个字节的lpReturnData数组,意图把他传给 OTM99Drive的poll函数,让其给数组赋值,在一般情况下来讲,这种方式是没什么问题的,但是,当要发送的字节数大于1024个字节时,如果不注意(因为潜意识认为只要更新OTM99Drive.cpp的文件就可以了),将会造成数组的越界,导致程序的崩溃
3.解决
第一种方法是增加缓冲区
第二种方法是利用可以自增的stl的类模板