Coredump-Z: 软件版本与数据版本的匹配

简介

之前遇到过这么一类情况:所创作的软件涉及数据库数据加载。这样就形成一种需要两者版本一致的情况;也就是说,如果软件所定义的容纳数据库表结构的结构体或者类定义的版本,一定要和数据表的结构一致。
当然这里有一个前提条件,是为了性能考虑,在将表记录赋值到结构体或者类时,使用了memcpy。没有对数据是否合法做出判断。

这种Coredump,属于软件设计导致问题的一种类型。

举例

比如:
struct A{
int B;
char C[13];
double D;
}

数据库表的结构也是一个32位 int,13个bytes字符串,一个32位double类型。在整体复制是,其实很容易就映射过去。

出现coredump的情况

假如数据库表结构变了,C这个字段的数组扩充了10个bytes,变成23个btyes容量;那么数据结构A需要做相同的扩充。
如果不一致,就很有可能导致内存访问越界的问题。

猜你喜欢

转载自blog.csdn.net/qq_36428903/article/details/125530991