现在的位置: 首页 > 综合 > 正文

项目记录-因为类增加了一个成员变量而导致的access violation

2013年08月21日 ⁄ 综合 ⁄ 共 422字 ⁄ 字号 评论关闭

 场景:

两个Project A和B, 在B中的某个类BB中增加了几个成员变量,BB类的头文件被Project A中的某段代码引用。

A中的引用代码是。

vector<BB> lvBB;

lvBB.resize(2).

在对BB类做了修改之后,只是单纯的对project B做了编译,而没有对A做编译。

 

结果:

当运行到上面那段代码的时候,产生了accesss violatioin的问题。

 

原因:

在对BB类做了修改之后,只是单纯的对project B做了编译,而没有对A做编译。

这样在Project A里面还是认为BB类的大小还是原来的大小,所以在分配内存的时候也只是分配了原来大小的空间,

但是调用resize()的时候会触发BB类的构造函数,在BB构造函数中需要对增加的成员变量赋值,不赋值还好,一赋值就成了内存非法访问了,

因为这块内存空间没有分配。

 

教训:

以后还是编译整个solution,而不是单个project编译, 或者知道依赖关系的话,可以一个一个编译。

 

 

 

抱歉!评论已关闭.