今天在做公司里的一个项目时,定义了一个业务处理接口。
大致原理是这样的,实际应用比这里复杂的多,为了简单化描述
struct transaction
{
char rxbuf[MAX_RX_LEN];
int (*cb)();
}
rxbuf是从网络里接受数据的缓冲区。
当要调用cb时发现cb的内容变了。
经过调试发现是rxbuf越界,网络接收的数据大于MAX_RX_LEN了。
因此cb中的内存被改变。
以后要注意这个问题
今天在做公司里的一个项目时,定义了一个业务处理接口。
大致原理是这样的,实际应用比这里复杂的多,为了简单化描述
struct transaction
{
char rxbuf[MAX_RX_LEN];
int (*cb)();
}
rxbuf是从网络里接受数据的缓冲区。
当要调用cb时发现cb的内容变了。
经过调试发现是rxbuf越界,网络接收的数据大于MAX_RX_LEN了。
因此cb中的内存被改变。
以后要注意这个问题