用std的容器做接口或参数应注意的问题

来源:互联网 发布:编程初级教学书 编辑:程序博客网 时间:2024/06/06 15:51

案例:

    接口里有一个回调函数的参数,是类,里面有成员变量是vector类型,该接口以dll提供。

    老是crash这个接口的回调里。

    跟踪之。。。。

    发现dll里面,sizeof(vector)是20字节,而一出底层,到界面的回调里,同一个地址,sizeof(vector)就成了24字节。

    同事查了资料,发现大部分提到了编译选项的问题:迭代器_debug_enabled

    遂发现,原来同事提交了debug版的到release目录下调试。

 

    终于更加理解debug和release的区别。debug时,编译器会加入很多调试信息。如果跟release混用,容易出现同一个结构占空间不同的情况,导致内存访问违例

 

原创粉丝点击