train的专栏

学习之路

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

 场景:

两个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编译, 或者知道依赖关系的话,可以一个一个编译。

 

 

 

阅读更多
文章标签: access
个人分类: C/C++语法的学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭